簡體   English   中英

在將列表作為值的python字典中查找最小值或最少的項目

[英]Finding the lowest value or fewest items in a python dictionary that has lists as values

我有一本以列表為值的字典; 我需要找到列表中項目數量較少的鍵

此外,我需要找到列表中具有最低個人分數的項目的鍵。

我真的不知道如何解決第一個問題,但我試圖找到第二個問題我覺得我的編碼嘗試並沒有帶來我期望的結果。

感謝您的任何幫助或任何指示


results = {
    'a': [21, 23, 24, 19],
    'b': [16, 15, 12, 19],
    'c': [23, 22, 23],
    'd': [18, 20, 26, 24],
    'e': [17, 22],
    'f': [22, 24],
    'g': [21, 21, 28, 25]
}



#Attempt1
print(min(results.items()))

#attempt2
print(results[min(results,key=results.get)])

您可以使用:

最少的項目:

min(results, key=lambda x: len(results[x]))

輸出: 'e'

最低分:

min(results, key=lambda x: min(results[x]))

輸出: 'b'

為什么您的嘗試失敗:

min(results.items())

將首先獲得最低的鍵,然后在出現平局的情況下比較列表(請注意,因為鍵是唯一的,所以不能有平局)。 因此,這與 min(results.keys()) 相同

min(results, key=results.get)

將比較這些值,然后選擇列表中第一項最小的項,或者在平局的情況下選擇第二項,或者第三項……

在下面嘗試具有較低 len 的鍵:

>>> min(results, key=lambda x: len(results[x]))
'e'

在下面嘗試具有較低值的鍵:

>>> min(results, key=lambda x: min(results[x]))
'b'

這是如何運作的?

min(results, key=lambda x: ...)
# ---------------------^^^ x is a key of your dict : 'a', 'b', ...
# Then when write min(results[x]) or len(results[x]), we want to find 
min(min(results['a']) , min(results['b']), ...))
min(results, key = 19, 12, ...)
----------------^'a'^,^'b'^
# So when 12 is min, we get key 'b'

暫無
暫無

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

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