字典排序和删除

时间:2014-12-11 02:34:46

标签: python sorting dictionary

我坚持使用字典并在python中排序,我将以下值存储在字典中:

{'PersonA': 87.0, 'PersonB': 89.0, 'PersonC': 101, 'PersonD': 94, 'PersonE': 112}

我想:

1)对它们进行排序,使它们按照最高分排序,最低分数为
2)从词典中删除分数,只留下名称

在上面的例子中,函数应该返回:

['PersonE', 'PersonC', 'PersonD', 'PersonB', 'PersonA']

4 个答案:

答案 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