首页 > 解决方案 > 如何根据 Python 2.7 中的值列表重新排序 OrderedDict?

问题描述

我正在尝试找出如何使用值列表对我的 OrderedDict 重新排序。这是我的代码:

import collections

dicti = {'a':1, 'b':2, 'c':3}
ordered_dict = collections.OrderedDict(sorted(dicti.items(), key=lambda t: t[0]))
desired_dict_order = [3,2,1]

print 'ordered_dict before reordering =', ordered_dict   

for key in desired_dict_order:
    ordered_dict[key] =  ordered_dict.popitem(key)

print 'ordered_dict after reordering =', ordered_dict

我从这个线程<[please see it] 中得到了这个想法,它也回答了这个问题,但是我在 Python 2.7 中这样做,它似乎不起作用,因为输出产生了这个我不明白的奇怪结果:

ordered_dict before reordering = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
ordered_dict after reordering = OrderedDict([('a', 1), ('b', 2), (1, (2, (3, ('c', 3))))])

它在做什么,我怎样才能以正确的方式实现它?

编辑:我想根据 OrderedDict 的索引重新排序,所以最后我可以重新排序 dict,即使 dict-keys 和 dict-values 是任何东西并且不需要顺序枚举(比如 1, 2、3)

标签: python

解决方案


ordered_dict = collections.OrderedDict(sorted(dicti.items(), key=lambda t: t[1],reverse=True))

这会产生你想要的吗?因为您已经在键上排序,所以为什么不直接对值进行反向排序呢?


推荐阅读