尝试这个:
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