簡體   English   中英

如何在字典的字典中找到具有最高值的鍵?

[英]how to find the key with the highest value in a dict of dicts?

我有一個字典。

例子:

scores[i][subentity_type] = the_score

它看起來像這樣:

scores = {0:{'SD':1,'ED':2},1:{'SD':0.5,'ED':3}}

所以我想要一個返回的函數

'SD' --> 0
'ED' --> 1

對於每個subentity_type ,我想找到得分最高的鍵i 你知道是否有一個python函數來提供這個嗎? 謝謝!

有一個max()方法接受一個數組並確定最大值。

您可以使用mydict.values()將 dict 的值轉換為列表,或者作為mydict.values()中的v for v in mydict.values()生成器v for v in mydict.values()

但是,您有一個字典。 您可以for dictofdict in mydict.values()使用for dictofdict in mydict.values()遍歷它

-> 結果代碼:

>>> mydict={'a': {'aa': 3, 'ab':7},
...         'b': {'ba': 5, 'bb':9}}
>>> [v for dictofdict in mydict.values() for v in dictofdict.values()]
[3, 7, 5, 9]
>>> max([v for dictofdict in mydict.values() for v in dictofdict.values()])
9

獲得最高值的 dict 的 dict。

由於您實際上還沒有解釋最終輸出的樣子,但我認為您可以根據值對dict項進行排序並獲得具有最高值的鍵。 以 Tin 的回答為例

mydict={'a': {'aa': 3, 'ab':7},
        'b': {'ba': 5, 'bb':9}}

new_dict ={}

for k in mydict.keys():
    new_dict[k] = sorted(mydict[k].items(), key= lambda v:-v[1])[0][0] 

#new_dict = {'a': 'ab', 'b': 'bb'}

暫無
暫無

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

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