2016-09-24 3 views
4

ネストされた辞書がある場合、それぞれの '外側'キーが複数のキーを持つ辞書にマップできる場合、新しいキーを '内部'辞書にどのように追加しますか?例えば、私は、各要素が3つのコンポーネント、すなわち外部キー、内部キー、および値(A B 10)で構成されるリストを持っています。内側の辞書に値を、任意の新しいキー:値はあからさま内側の辞書を置き換えます。ここネストされた辞書を追加する

は、私は今、これまで

for e in keyList: 
    nested_dict[e[0]] = {e[2] : e[3:]} 

を持っているループは、代わりに新しいキーを追加するのです。

たとえば、keyListがちょうど[(A B 10)、(A D 15)]であるとします。代わりに、それは

{'A' : {'B' : 10, 'D' : 15}} 

答えて

10

だように、そのループで結果が

{'A' : {'D' : 15}} 

でどのように私はあなたがe[0]をキーに、新しく作成した辞書を割り当てるようにコードを告げ、それを作ることができます。それは常に盲目的に置き換えられ、以前に格納された値を見ません。

for e in keyList: 
    if e[0] not in nested_dict: 
     nested_dict[e[0]] = {} 
    nested_dict[e[0]].update({e[2] : e[3:]}) 

If条件処理するために必要とされる '第一の鍵' の場合:

は、代わりに次のようなものが必要。或いは、defaultdictを使用することができる。

from collections import defaultdict 
nested_dict = defaultdict(dict) 
for e in keyList: 
    nested_dict[e[0]].update({e[2] : e[3:]}) 
+0

私はupdate()関数について知らなかった。ありがとう、それは働いた! – Bob

関連する問題