根据列表中的项数对Python字典进行排序

根据列表中的项数对Python字典进行排序,python,algorithm,sorting,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']} Python中的字典是无序的 为了实际存储

我有一个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']}

Python中的字典是无序的

为了实际存储排序,您需要有一个元组列表,或者使用一个


这里的排序是通过使用,使用一个简单的
函数来实现的。

Python中的字典是无顺序的

为了实际存储排序,您需要有一个元组列表,或者使用一个


这里的排序是通过使用,使用一个简单的
key
函数来实现的。

key=lambda(k,v):len(v)
(对于Python2)@gnibbler只在2.x中使用。@Lattyware,不幸的是,这是我错过了3的一个用例,尽管2to3应该将其改写为ok
key=lambda k_v:len(k_v[1])
item
k_v
key=lambda(k,v):len(v)
(对于Python2)@gnibler只在2.x中可读。@Lattyware,不幸的是,这是我在3中错过的一个用例,尽管2to3应该将其改写为ok
key=lambda k_v:len(k_v[1])
item
k_v
>>> 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'])])