Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OrderedDict按项目长度排序python字典_Python_List_Dictionary_Sorted_Ordereddictionary - Fatal编程技术网

使用OrderedDict按项目长度排序python字典

使用OrderedDict按项目长度排序python字典,python,list,dictionary,sorted,ordereddictionary,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()))) 但是我得到了一个类型错误:“int”对象不可编辑 我通过迭代以下内容找到了解决方法: for k in sorted(d, key=lambda k: len(d[k]), revers

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

表示:

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

od = collections.OrderedDict(sorted(len(d.items())))
但是我得到了一个
类型错误:“int”对象不可编辑

我通过迭代以下内容找到了解决方法:

for k in sorted(d, key=lambda k: len(d[k]), reverse=True): 
需要的时候,但我希望事先把目录分类。

您可以:

并将其传递给集合。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])])

第一个
sorted
函数调用是错误的(第二个也是错误的,但原因不同),错误消息解释了原因。该错误与将其转换回OrderedDictionary无关。把问题分解成几个部分,修复坏的部分,然后使用/应用修正。你说我宁愿事先把这篇文章分类是什么意思。?
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])])