我在Python中遇到了字典和排序问题,我有以下数值存储在一个字典中:
{'PersonA': 87.0, 'PersonB': 89.0, 'PersonC': 101, 'PersonD': 94, 'PersonE': 112}
我希望你能:
1)按照最高分到最低分的顺序对它们进行排序
2)从字典中删除得分,只留下名称
例如,在上面的示例中,该函数应返回:
['PersonE', 'PersonC', 'PersonD', 'PersonB', 'PersonA']
我在Python中遇到了字典和排序问题,我有以下数值存储在一个字典中:
{'PersonA': 87.0, 'PersonB': 89.0, 'PersonC': 101, 'PersonD': 94, 'PersonE': 112}
我希望你能:
1)按照最高分到最低分的顺序对它们进行排序
2)从字典中删除得分,只留下名称
例如,在上面的示例中,该函数应返回:
['PersonE', 'PersonC', 'PersonD', 'PersonB', 'PersonA']
sorted
来完成这个任务:>>> d = {'PersonA': 87.0, 'PersonB': 89.0, 'PersonC': 101, 'PersonD': 94, 'PersonE': 112}
>>> sorted(d, key=d.get, reverse=True)
['PersonE', 'PersonC', 'PersonD', 'PersonB', 'PersonA']
>>>
d1 = {'PersonA': 87.0, 'PersonB': 89.0, 'PersonC': 101, 'PersonD': 94, 'PersonE': 112}
print([n for n,s in sorted(d1.items(), key=lambda v:v[1], reverse=True)])
['PersonE', 'PersonC', 'PersonD', 'PersonB', 'PersonA']
无法对字典进行排序,因为字典是无序的,但其他类型,如列表和元组,则不是。但您可以获得已排序的表示。
例如,
import operator
x = {first: 2, second: 4, third:3, fourth:1, fifth:0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))
或者你也可以这样做
sorted(x.values()) to get a sorted representation.
保留字典并对其进行排序的选项:
>>>from collections import OrderedDict
>>> # regular unsorted dictionary
>>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
>>> # dictionary sorted by key
>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
>>> # dictionary sorted by value
>>> OrderedDict(sorted(d.items(), key=lambda t: t[1]))
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])
>>> # dictionary sorted by length of the key string
>>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0])))
OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)])
详情:sorted函数有一个reverse(bool)参数,例如:
>>> OrderedDict(sorted(d.items(), key=lambda t: t[0], reverse = True))
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])
使用方法很正常:
>>> dic = OrderedDict(sorted(d.items(), key=lambda t: t[0]))
>>> dic['banana']
3
字体:https://docs.python.org/2/library/collections.html#ordereddict-examples-and-recipes
dict.get
来确定顺序。 - user2555451