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,字典上的反向函数,但它不起作用
答案 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的更多信息。