如何按列表长度对列表的 defaultdict 进行排序

How can I sort a defaultdict of list by length of list

我有一个defaultdict喜欢:

d = {'a':[1], 'b':[2,3,4], 'c':[5,6]}

我预计:

sorted_d = {'b':[2,3,4], 'c':[5,6], 'a': [1]}

如何按列表的长度排序?

python 中的词典未排序。

使用collections.OrderedDict:

>>> d = {'a':[1], 'b':[2,3,4], 'c':[5,6]}
>>> from collections import OrderedDict
>>> OrderedDict(sorted(d.items(), key=lambda item: len(item[1]), reverse=True))
OrderedDict([('b', [2, 3, 4]), ('c', [5, 6]), ('a', [1])])

defaultdicts - 与普通词典一样 - 没有顺序。

如果你只是想以一种排序的方式迭代它:

for key in sorted(d, key=lambda x:len(d[x]), reverse=True):
    ...