根据列表中的项目数排序Python字典

时间:2013-06-28 10:45:46

标签: python algorithm sorting

我在Python中有一个小脚本,其字典如下:

d = {'category_1' : ['a', 'b'], 
'category_2' : ['c', 'd', 'e'],
'category_3' : ['z']}

如何根据列表中的值数对其进行排序?我希望它看起来像:

d = {'category_3' : ['z'], 
'category_1' : ['a', 'b'], 
'category_2' : ['c', 'd', 'e']}

1 个答案:

答案 0 :(得分:7)

Python中的字典是无序的。

为了实际存储排序,您需要有一个元组列表,或使用collections.OrderedDict()

>>> from collections import OrderedDict
>>> OrderedDict(sorted(d.items(), key=lambda item: len(item[1])))
OrderedDict([('category_3', ['z']), ('category_1', ['a', 'b']), ('category_2', ['c', 'd', 'e'])])

使用the sorted() built-in,使用简单的key函数即可实现排序。