我有列表字典,我需要按列表中的第一个值排序。我使用的是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']
答案 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']
>>>