こんにちは、値のリストを持つキーを持つ順序付けられた辞書が欲しいです。
以下のコードから、キーのリストを含む辞書を取得できましたが、挿入順序がありません。
from collections import defaultdict
keys=['blk','pri','ani']
vals1=['blocking','primary','anim']
vals2=['S1','S2','S3']
dic = defaultdict(list)
i=0
for key in keys:
dic[key].append(vals1[i])
dic[key].append(vals2[i])
i += 1
print dic
次の結果が得られます
defaultdict(<type 'list'>, {'pri': ['primary', 'S2'], 'ani': ['anim', 'S3'], 'blk': ['blocking', 'S1']})
ここで挿入順序を失いました。
Pythonのdefaultdictオブジェクトは定義上順序付けされていないことを私は知っています。
また、値が挿入された順序が必要な場合は、OrderedDictを使用する必要があることを知っています(Python 2.7および3.xで使用可能です)
だから私のコードを以下のように変更しました
以下のコードから、必要なものを取得できました。
from collections import defaultdict,OrderedDict
keys=['blk','pri','ani']
vals1=['blocking','primary','anim']
vals2=['S1','S2','S3']
dic = OrderedDict(defaultdict(list))
i=0
for key in keys:
dic[key].append(vals1[i])
dic[key].append(vals2[i])
i += 1
print dic
そして今、私は以下のエラーを受け取ります
Traceback (most recent call last):
File "Dict.py", line 18, in <module>
dic[key].append(vals1[i])
KeyError: 'blk'
誰かが私が試しているものを手に入れる方法を教えてもらえますか?