2017-04-06 56 views
-1

我試圖比較字典中鍵中的元素。我想首先比較鍵的所有第一個元素,然後如果有多個具有最高值的元素,則比較這些鍵中的第二個元素。Python - 比較字典中的鍵元素並返回其中一個鍵

例如:

>>> my_dict = { 111: [50, 2, 34], 122: [50 , 4, 45], 133: [40, 1, 12], 144: [20, 5, 77]} 

1)搜索最高值第一元件。結果應該是:

('111', '122') 

2)搜索'111'和'112'的第二個元素作爲最小值。結果應該是:

('111') 

我發現this討論,以找到具有最大值的關鍵。一個解決方案返回多個相同的最大密鑰是:

>>> stats = {'a':1000, 'b':3000, 'c': 100, 'd':3000} 
>>> [key for key,val in stats.iteritems() if val == max(stats.values())] 
['b', 'd'] 

這裏的問題是,這些鍵只有一個元素。我需要弄清楚如何爲具有多個元素的鍵執行此操作。

我想我可以返回每個按鍵的第一要素是這樣的:

>>> [item[0] for item in my_dict.values()] 
['50', '50', '40', '20'] 

但後來如何比較呢?在此先感謝您的幫助!

+0

如果你不關心按鍵,'my_dict.values()'會給你一個列表(值)的列表。然後你可以比較列表。 –

+0

你可以用for循環,或像'cmp()','sum()'等等函數或像numpy這樣的外部庫來實現。 –

回答

1

使用你的字典例如,看來我下面會適合你的定義

>>> stats = {'a':[1,2,3], 'b':[2,8,9], 'c': [3,4,5], 'd':[5,6,8]} 
>>> [key for key,val in stats.items() if sum(val) == max([sum(i) for i in stats.values()])] 
['b', 'd'] 

,然後做你的比較或任何責任。 但是,我不會推薦使用字典進行這些比較,因爲字典本身是無序的。如果可能的話,我會推薦使用或排序(列表,鍵)方法來生成一個有序列表進行比較。

+0

獲取元素的總和,然後找到總和的最大值。我需要找到最大的第一個元素,然後如果有多個元素找到最小的第二個元素的鍵。我會研究一下列表。我喜歡有一把鑰匙,因爲它是每個條目的唯一標識符。 – Ebad

相關問題