小编典典

如何基于数组重新排序python命令字典?

python

假设我有一个包含以下项目的命令字典:

mydict = {'Rust': {'definition':'rusts definition'}, 'Iron': {'definition:'iron definition'}, 'Pyrite': {'definition':'pyrite definition'}}

如果我有一个数组:

myorder = ['Pyrite', 'Rust', 'Iron']

如何重新排序Ordered Dict,以使mydict中的项目基于myorder排序?


阅读 140

收藏
2021-01-20

共1个答案

小编典典

尝试这个:

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
2021-01-20