2017-04-06 81 views
0

我在列表中有很多字典。字典列表中Python最常見的值

[{'key3': '2', 'key2': '12', 'key1': '1'}, 
{'key3': '4', 'key2': '12', 'key1': '1'}, 
{'key3': '3', 'key2': '1', 'key1': '1'}, 
{'key3': '5', 'key2': '4', 'key1': '1'}] 

如何獲取key2的最新值?這個例子應該打印12?

+0

我認爲'my_list [0] ['key2']'是你正在尋找的答案*(通過最近和你想要的輸出,我假設你的列表中的第0項)* –

+3

你是什麼意思最近?我們怎麼會知道第二個問題的答案? – RafaelC

+0

等待,最近還是常見?如果你的意思是最近的,那麼你的意思是什麼?最後一個值,第一個值? – ShadowRanger

回答

1

試試這個:

my_map = {} 
for entry in my_list: 
    try: 
     my_map[entry['key2']] += 1 
    except KeyError: 
     my_map[entry['key2']] = 1 
print(max(my_map, key=my_map.get)) 

您將創建一個字典(my_map)持有計數。在列表的每個元素上,將key2值存儲在地圖中並遞增計數。我們需要try/except方法,這樣如果key不存在,我們可以將它設置爲1,否則我們就增加它。

在for循環my_map年底將是這樣的:{'1': 1, '4': 1, '12': 2}

最後一行得到最大值在列表中,具有最高計數KEY2。我們提供key=lambda a: my_map[a]來告訴max函數使用字典的值作爲最大值,而不是僅使用鍵。

+0

這不是很好,我的意思是key2的最常見值 – lukassz

+0

更新了新需求的代碼,給它一個鏡頭。 – CamJohnson26

+0

感謝它的完美。我想知道,有可能以更短的方式做到這一點? – lukassz