2017-11-07 6 views
0

キーを最初に表示して値を追加する必要がある辞書を持っていて、後でこの値を追加して値を更新します値を以前の値に戻すには、どうすればいいのか不思議です。リストのようにキーの値を更新/追加する

outter_dict = defaultdict(dict) 
num_index = 100 
outter_dict['A'].update({num_index: 1}) 
outter_dict['A'].update({num_index: 2}) 

2outter_dictの内部辞書のキー100の値として1を交換しますが、理想的に、それは次のようになります、

'A': {100:[1,2]} 

UPDATE

outter_dict = defaultdict(list) 
outter_dict['A'][1].append(2) 

私が得ました

IndexError: list index out of range 

私は

dict['A'][1] = list() 

をすれば前1に任意の値を割り当て、私はあなたがcollections.defaultdictを使用することができます

IndexError: list assignment index out of range 

答えて

2

を得た:

from collections import defaultdict 
d = defaultdict(list) 
num_index = 100 
d[num_index].append(1) 
d[num_index].append(2) 
print(dict(d)) 

出力:

{100: [1, 2]} 

最新の編集に関しては、あなたがdefautldict(dict)setdefaultを使用したい:

outter_dict = defaultdict(dict) 
outter_dict["A"].setdefault(1, []).append(2) 
print(dict(outter_dict)) 

出力:

{'A': {1: [2]}} 
+0

どのように 'D 'は、' 'defaultdict(辞書)であるときは? – daiyue

+0

@daiyue 'defaultdict(dict)'を使うと、新しいキーと値のペアが追加される前にサブ辞書に特定のキーが存在するかどうかを確認する必要はありません。 – Ajax1234

+0

私は 'defaultdict(list)'をネストされたdictとして使いこなそうとしました。私のOPを見てくださいが、 'IndexError:list index of range'を受け取りました。 – daiyue

関連する問題