我有一本词典
i={106:0.33,107:0.21,98:0.56}
我想根据键对键:值对进行排序。我期待输出看起来如下:
{98:0.56, 106:0.33, 107:0.21}
当我使用它时:
od = collections.OrderedDict(sorted(i.items()))
print(od)
我输错了:
[(98,0.56),(106,0.33),(107,0.21)]
任何人都可以帮我找到正确的代码吗?
答案 0 :(得分:2)
OrderedDict会记住您将项目添加到词典中的顺序,而不是排序顺序。
但您可以轻松地从常规字典创建排序列表。例如:
>>> list1={106:0.33,107:0.21,98:0.56}
>>> sorted(list1.items())
[(98, 0.56), (106, 0.33), (107, 0.21)]
或者如果你想在OrderedDict中使用它,只需在排序后应用OrderedDict:
>>> from collections import OrderedDict
>>>
>>> list1={106:0.33,107:0.21,98:0.56}
>>> OrderedDict(sorted(list1.items()))
OrderedDict([(98, 0.56), (106, 0.33), (107, 0.21)])
但是常规字典没有排序顺序的概念,所以你不能对字典本身进行排序。
但是,如果你真的想要那个显示,你可以创建自己的类:
>>> from collections import OrderedDict
>>> class MyDict(OrderedDict):
... def __repr__(self):
... return '{%s}' % ', '.join(str(x) for x in self.items())
...
>>> list1={106:0.33,107:0.21,98:0.56}
>>> MyDict(sorted(list1.items()))
{(98, 0.56), (106, 0.33), (107, 0.21)}