如何将带有列表的字典作为值转换为以整数作为值的字典?

时间:2016-03-06 13:02:50

标签: python list sorting dictionary

我有这样的字典:

Averages = {'Jennifer': [1],'Chris': [5],'Malcolm': [9]}

我想更改和排序该词典(而不是新词典):

Averages = {'Malcolm': 9, 'Chris': 5, 'Jennifer': 1}

我该怎么做?

3 个答案:

答案 0 :(得分:1)

将两个答案合并在一起,你应该使用OrderedDict

import operator
from collections import OrderedDict

Averages = {'Jennifer': [1],'Chris': [5],'Malcolm': [9]}
Averages ={k:v[0] for k,v in Averages.items()}
Averages = OrderedDict(sorted(Averages.items(),  key=operator.itemgetter(1), reverse=True))

答案 1 :(得分:0)

您可以使用dictionary comprehension

>>> Averages2 ={k:v[0] for k,v in Averages.items()}
>>> Averages2
{'Chris': 5, 'Malcolm': 9, 'Jennifer': 1}

答案 2 :(得分:0)

python中的字典被声明为无序,它们没有顺序。因此,你无法推动他们保存订单。你可以尝试从任何有序的对象创建一个dict,它将失去它的顺序,所以只是忘记它。如果您想要订购,请使用不同的类型,例如列表或ordered dict

@JoeК回答你,如何让你的词典成为整数,而不是列表。如果您想获得订购商品的清单,请尝试以下方法:

>>>import operator
>>> A = sorted(Averages.items(), key=operator.itemgetter(1))
>>> A
[('Jenifer', 1), ('Chris', 5), ('Malcolm', 9)]

如果您认为这是您需要的订单 - 那么很好。如果您仍然坚持要在字典中订购这些项目 - 请尝试:

>>> dict(A)
{'Chris': 5, 'Malcolm': 9, 'Jenifer': 1}

这是不可能的。