按相反的顺序排序字典

时间:2015-12-11 10:50:10

标签: python dictionary

my_dict = {1: {'f1': 'name', 'f2': 'age', 'f3': 'class'}, 2: {'f1': 'company', 'f2': 'salary', 'f3': 'age', 'f4': 'class'}, 3: {'f1': 'Feature', 'f2': 'sum', 'f3': 'diff', 'f4': 'multiply', 'f5': 'div', 'f6': 'and', 'f7': 'or', 'f8': 'not', 'f9': 'dummy'}}

我需要反过来作为

my_dict = { 3: {'f1': 'Feature', 'f2': 'sum', 'f3': 'diff', 'f4': 'multiply', 'f5': 'div', 'f6': 'and', 'f7': 'or', 'f8': 'not', 'f9': 'dummy'},2: {'f1': 'company', 'f2': 'salary', 'f3': 'age', 'f4': 'class'},1: {'f1': 'name', 'f2': 'age', 'f3': 'class'}, }

我尝试过使用 sort,Ordereddict,字典上的反向函数,但它不起作用

2 个答案:

答案 0 :(得分:0)

OrderedDict只记住插入顺序,而dict没有顺序,所以你必须从元组列表中构造你的OrderedDict(或者在构造ord之后逐个插入值.dict ):

>>> from collections import OrderedDict
>>> od = OrderedDict([(3, 'three'), (2, 'two'), (1, 'one')])
>>> od
OrderedDict([(3, 'three'), (2, 'two'), (1, 'one')])

如您所见,维持订单。

如果您需要两个订单,我们可以使用key, value遍历od.items()对,我们可以使用reversed来反转这些对的顺序:

>>> reversed_od = OrderedDict(reversed(od.items()))
>>> reversed_od
OrderedDict([(1, 'one'), (2, 'two'), (3, 'three')])

答案 1 :(得分:-1)

Python dict是无序的,这意味着您无法管理元素顺序。唯一的方法是使用OrderedDict而不是dict。

如果你想存储你的dict数据按键降序排序,这是IMO最简单的方法:

OrderedDict(sorted(my_dict.items(), key=lambda t: t[0], reverse=True))

Here您可以阅读有关OrderedDict的更多信息。

相关问题