说我有一个订购的Dict包含以下项目:
mydict = {'Rust': {'definition':'rusts definition'}, 'Iron': {'definition:'iron definition'}, 'Pyrite': {'definition':'pyrite definition'}}
如果我有一个数组:
myorder = ['Pyrite', 'Rust', 'Iron']
如何重新排序有序字典,以便根据myorder对mydict中的项目进行排序?
答案 0 :(得分:11)
试试这个:
mydict = {'Rust': {'definition':'rusts definition'},
'Iron': {'definition':'iron definition'},
'Pyrite': {'definition':'pyrite definition'}}
myorder = ['Pyrite', 'Rust', 'Iron']
from collections import OrderedDict
ordered = OrderedDict()
for k in myorder:
ordered[k] = mydict[k]
甚至更短:
ordered = OrderedDict((k, mydict[k]) for k in myorder)
使用上面的代码段,ordered
将包含与mydict
相同的键/值,但它们将按照myorder
指定的相同顺序插入。这是OrderedDict
的优点:当迭代它时,它将保留插入顺序。
没有办法对现有字典进行现场排序(好吧,你可以提取所有键值对,消除它们并按正确的顺序再次添加它们,但这不是主意,是吗?),有必要创建一个新的...或者只是按指定的顺序迭代现有的字典:
for k in myorder:
x = mydict[k] # do something with x
答案 1 :(得分:0)
如果您想按顺序使用它们,可以这样做,例如。
for key in myorder:
value = mydict[key]
print value
输出:
{'definition': 'pyrite definition'} {'definition': 'rusts definition'} {'definition': 'iron definiti