您好想要一个有序的字典,其中的键具有值列表。
从下面的代码中,我可以获得带有键列表的字典,但缺少插入顺序。
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'
谁能告诉我如何得到我正在尝试的东西。