2013-07-19 75 views

回答

4

你的意思是length

>>> sorted(d, key=lambda k: -len(d[k])) 
['Gross', 'Ugly', 'Random', 'Stupid'] 
>>> sorted(d, key=lambda k: len(d[k]), reverse=True) 
['Gross', 'Ugly', 'Random', 'Stupid'] 
+0

这对我的作品。谢谢,我需要习惯lambda。叹息 顺便说一句,为什么不使用'count'而不是'len' /。 –

+2

count计算列表中项目的出现次数,length返回列表中所有项目的数量 –

+0

@DeepankarBajpeyi,'[1,1,1,3] .count(1)'给出'3'。 'len([1,1,1,3])给出'4'。如果你想'3',使用'count'。 – falsetru

1

因为你是从字典开始可能你需要一个结束,而不是一个列表,以便:

>>> import collections 
>>> d = { 
...  "Random" : [1,2,3], "Stupid" : [1], "Gross" : [1,1,1,1,1], "Ugly" : [2,1,1,1] 
...  } 
>>> sd = collections.OrderedDict(sorted(d.items(), key=lambda t: -len(t[1]))) 
>>> sd 
OrderedDict([('Gross', [1, 1, 1, 1, 1]), ('Ugly', [2, 1, 1, 1]), ('Random', [1, 2, 3]), ('Stupid', [1])]) 
>>>