Python:排序列表的默认字典

时间:2014-07-03 16:05:59

标签: python sorting dictionary defaultdict

我有列表字典,我需要按列表中的第一个值排序。我使用的是defaultdict。

from collections import defaultdict
Dict = defaultdict(list)
Dict['A'].append([100, 'abcd'])
Dict['A'].append([50, 'bgfd'])
Dict['A'].append([150, 'abcd'])

我需要以有序的方式遍历字典,以便得到:

for Entry in Dict['A']:
     print Entry

应该给:

[50, 'bgfd']
[100, 'abcd']
[150, 'abcd']

2 个答案:

答案 0 :(得分:1)

只是一个列表,因此您可以使用sorted()对其进行排序:

for Entry in sorted(Dict['A']):
    print Entry

排序是对列表内容的词典;因此,首先排序由list_a[0]list_b[0]确定,然后如果这些结合,则比较元素1等。

所有这些都与defaultdict无关,这只是键和值的容器,但您已经检索了该值。

演示:

>>> from collections import defaultdict
>>> Dict = defaultdict(list)
>>> Dict['A'].append([100, 'abcd'])
>>> Dict['A'].append([50, 'bgfd'])
>>> Dict['A'].append([150, 'abcd'])
>>> sorted(Dict['A'])
[[50, 'bgfd'], [100, 'abcd'], [150, 'abcd']]

答案 1 :(得分:1)

只需使用sorted并对Dict['A']中存储的列表进行排序:

>>> from collections import defaultdict
>>> Dict = defaultdict(list)
>>> Dict['A'].append([100, 'abcd'])
>>> Dict['A'].append([50, 'bgfd'])
>>> Dict['A'].append([150, 'abcd'])
>>>
>>> for Entry in sorted(Dict['A']):
...     print Entry
...
[50, 'bgfd']
[100, 'abcd']
[150, 'abcd']
>>>