或者,相反,他们固有的秩序是“任意但不是随机的”,所以它不会有什么好处的.
不同的是,您的d和e将完全相同的字典.
from collections import OrderedDict
d = { '123': { 'key1': 3, 'key2': 11, 'key3': 3 },
'124': { 'key1': 6, 'key2': 56, 'key3': 6 },
'125': { 'key1': 7, 'key2': 44, 'key3': 9 },
}
d_ascending = OrderedDict(sorted(d.items(), key=lambda kv: kv[1]['key3']))
d_descending = OrderedDict(sorted(d.items(),
key=lambda kv: kv[1]['key3'], reverse=True))
原来的d有一些任意的顺序. d_ascending有你以为你在原来的d但没有的顺序.而d_ascending有你想要的e的顺序.
如果您真的不需要使用e作为字典,则只需要以特定顺序遍历d的元素即可,可以简化此操作:
for key, value in sorted(d.items(), key=lambda kv: kv[1]['key3'], reverse=True):
do_something_with(key, value)
如果要按任何更改的排序顺序维护字典,而不是OrderedDict,则需要某种排序的字典.有一些可用的选项,您可以在PyPI上找到,一些在树上执行,其他选项在OrderedDict之上,根据需要重新排序.