[英]How to sort dictionary with lists in python
我有一本字典如下。
my_d={"0":["code_5", "code_4", "code_10"],
"1":["code_1", "code_2", "code_3", "code_11"],
"2": ["code_7", "code_8"], "3": ["code_9"]}
我想通過考慮字典列表中元素的數量來對字典進行排序。 即為"1": ["code_1", "code_2", "code_3"]
具有3個元素,因此應放在字典的第一位。 因此,我的輸出應如下所示。
my_d = {"1":["code_1", "code_2", "code_3", "code_11"],
"0":["code_5", "code_4", "code_10"],
"2": ["code_7", "code_8"], "3": ["code_9"]}
現在,我只想獲取字典的前2個鍵。 因此,我的最終輸出應如下所示。
my_d={"1": ["code_1", "code_2", "code_3", "code_11"],
"0":["code_5", "code_4", "code_10"]}
我的文件很大。 所以我想要一種快速有效的方式在python中做到這一點。 請幫我!
你可以這樣嘗試
a =list(sorted(my_d.items(),key = lambda x:len(x[1]),reverse = True)[0:2]
print a
Out[94]:
[('1', ['code_1', 'code_2', 'code_3', 'code_11']),
('0', ['code_5', 'code_4', 'code_10'])]
In [95]: dict(a)
Out[95]:
{'0': ['code_5', 'code_4', 'code_10'],
'1': ['code_1', 'code_2', 'code_3', 'code_11']}
一句話你的答案是
a =dict(list(sorted(my_d.items(),key = lambda x:len(x[1]),reverse = True))[0:2])
正如評論中指出的那樣,不能保證字典中鍵的順序,如果需要,您必須使用Python collections
OrdredDict
from collections import OrderedDict
x = OrderedDict(sorted(my_d.iteritems(), key=lambda x:len(x[1]), reverse=True))
這樣,新的dict x
將保留您要查找的順序。
對於您的用例,以下解決方案可能會有點貴。 基本上是
my_d={"0":["code_5", "code_4", "code_10"], "1":["code_1", "code_2", "code_3", "code_11"],
"2": ["code_7", "code_8"], "3": ["code_9"]}
# Convert to array
k = list(my_d.items())
# Ascending sort
k.sort(key=lambda x: len(x[1]))
# Slice last two elements
k = k[-2:]
# Convert back to dictionary
dict = {}
for i in range(len(k)):
dict[k[i][0]] = k[i][1]
dict將包含所需的輸出
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.