我坚持使用字典并在python中排序,我将以下值存储在字典中:
{'PersonA': 87.0, 'PersonB': 89.0, 'PersonC': 101, 'PersonD': 94, 'PersonE': 112}
我想:
1)对它们进行排序,使它们按照最高分排序,最低分数为
2)从词典中删除分数,只留下名称
在上面的例子中,函数应该返回:
['PersonE', 'PersonC', 'PersonD', 'PersonB', 'PersonA']
答案 0 :(得分:7)
您可以使用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']
>>>
请注意,输出是一个名称列表。你不能在Python中对字典或集合进行排序,因为它们都是自然无序的。
答案 1 :(得分:2)
您可以执行以下操作:
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']
答案 2 :(得分:0)
无法对字典进行排序,因为字典是无序的,但其他类型(如列表和元组)则不是。但是您可以使用排序表示。
例如,
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.
答案 3 :(得分:0)
保留dic并对其进行排序的选项:
>>>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)])
细节:排序有反向(bool)arg,例如:
>>> 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
font:https://docs.python.org/2/library/collections.html#ordereddict-examples-and-recipes