使用OrderedDict按项目长度订购python字典

时间:2015-07-19 19:05:49

标签: python list dictionary sorted ordereddictionary

我试图使用OrderedDict制作一个字典,其中项目是一个条目列表,我希望排序基于项目列表的长度。

说:

d = {2:[1], 1:[1,2,3], 4:[1,2], 5:[1,2,3,4]}

我试过了:

od = collections.OrderedDict(sorted(len(d.items())))

但我得到了TypeError: 'int' object is not iterable

我通过迭代这样的事情找到了一种解决方法:

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

在需要时,但我宁愿预先对dict进行排序。

1 个答案:

答案 0 :(得分:3)

你可以sort d.items() according to the length of the values

In [268]: sorted(d.items(), key=lambda x: len(x[1]), reverse=True)
Out[268]: [(5, [1, 2, 3, 4]), (1, [1, 2, 3]), (4, [1, 2]), (2, [1])]

并将其传递给collections.OrderedDict

In [267]: collections.OrderedDict(sorted(d.items(), key=lambda x: len(x[1]), reverse=True))
Out[267]: OrderedDict([(5, [1, 2, 3, 4]), (1, [1, 2, 3]), (4, [1, 2]), (2, [1])])