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

2024-05-16 22:39:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本这样的字典:

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

我想把那本字典(不是新的)改成:

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

我该怎么做?你知道吗


Tags: 字典chrismalcolmaveragesjennifer
3条回答

您可以使用dictionary comprehension

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

把两个答案合并在一起,你应该有这样一个有序的信息

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))

python中的字典被声明为无序的,它们没有顺序。因此你不能强迫他们保存订单。您可以尝试从任何有序对象创建dict,它将失去其顺序,所以请忘记这一点。如果需要排序,可以使用不同的类型,如list或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}

这是不可能的。你知道吗

相关问题 更多 >