我尝试对此进行排序
{1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
到这个
{3: 4, 4: 3, 1: 2, 2: 1, 0: 0}
使用 a:b 模型,按最高 b 值排序
import operator
x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1), reverse=True)
print(sorted_x)
第一个结果很好但是以列表形式:
[(3, 4), (4, 3), (1, 2), (2, 1), (0, 0)]
我试着
print(dict(sorted_x))
但是...
{0: 0, 1: 2, 2: 1, 3: 4, 4: 3}
如何保存正确的排序结果并将其转换为dict格式? 非常感谢你
UPD:
OrderedDict([(3, 4), (4, 3), (1, 2), (2, 1), (0, 0)])
我无法理解OrderedDict如何解决我的问题
答案 0 :(得分:0)
字典无法订购。但您可以使用课程collections.OrderedDict
。
答案 1 :(得分:0)
>>> from collections import OrderedDict
>>> sorted_dict = OrderedDict()
>>> dct = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
>>> dct.values().sort()
>>> for x in sorted(dct.values(), reverse=True):
... keys = [idx for idx in dct if dct[idx]==x]
... for key in keys:
... sorted_dict[key] = x
...
>>>
>>> sorted_dict
OrderedDict([(3, 4), (4, 3), (1, 2), (2, 1), (0, 0)])
>>>
或者如果您已经开始编写类似于文件的dict语法的内容,
>>> def print_dict_looking_thing(ordered_dict):
... print "{"
... for key, value in ordered_dict.iteritems():
... print "{0}: {1},".format(key, value)
... print "}"
...
>>> print_dict_looking_thing(sorted_dict)
{
3: 4,
4: 3,
1: 2,
2: 1,
0: 0,
}
这就是OrderedDict"如何解决你的问题"。但是,有几点值得再次强调: