簡體   English   中英

Python:基於值對python字典進行排序的最佳方法; 值是列表

[英]Python : Best way to sort a python dictionary based on values ; values are lists

我有一個python字典

d = {
    "Random" : [1,2,3], "Stupid" :  [1], "Gross" : [1,1,1,1,1], "Ugly" : [2,1,1,1]
    }

上面的列表應基於列表值的count進行排序。

我試過這個: sorted(d, key=d.get, reverse=True)

但是我似乎沒有得到正確的結果。

你是說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']

由於您從一本字典開始,大概需要以一個字典而不是一個列表結尾,因此:

>>> 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])])
>>> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM