比方說,我有一本字典:如何獲取字典中的多個最大鍵值?
data = {'a':1, 'b':2, 'c': 3, 'd': 3}
我想在字典中的最大值(一個或多個)。到目前爲止,我一直在做:
max(zip(data.values(), data.keys()))[1]
但我知道我可能會錯過另一個最大值。什麼是最有效的方法來解決這個問題?
比方說,我有一本字典:如何獲取字典中的多個最大鍵值?
data = {'a':1, 'b':2, 'c': 3, 'd': 3}
我想在字典中的最大值(一個或多個)。到目前爲止,我一直在做:
max(zip(data.values(), data.keys()))[1]
但我知道我可能會錯過另一個最大值。什麼是最有效的方法來解決這個問題?
您也可以嘗試這樣的事:
from collections import defaultdict
data = {'a':1, 'b':2, 'c': 3, 'd': 3}
d = defaultdict(list)
for key, value in data.items():
d[value].append(key)
print(max(d.values()))
,輸出:
['c', 'd']
根據您的示例,您似乎在尋找映射到最大值的關鍵字。你可以使用列表理解:如果你有一個大字典
[k for k, v in data.items() if v == max(data.values())]
# ['c', 'd']
,打破這一成兩行,以避免計算最大的儘可能多的項目,你有:
mx = max(data.values())
[k for k, v in data.items() if v == mx]
在Python 2。 x您需要.iteritems()
。
首先,找出字典中出現的最大值。如果你想創建所有的最大值(一個或多個)的列表,然後再嘗試這樣的事:
data = {'a':1, 'b':2, 'c': 3, 'd': 3}
max_value = data.get(max(data))
list_num_max_value = []
for letter in data:
if data.get(letter) == max_value:
list_num_max_value.append(max_value)
print (list_num_max_value)
請讓我知道這是不是你正在嘗試做的,我會引導你通過正確的過程。
我不認爲你需要'.iteritems()'。 (我在Python 2.7) – user405892
@ user405892我想這可能不需要,但可能會更有效率的內存? https://stackoverflow.com/questions/10458437/what-is-the-difference-between-dict-items-and-dict-iteritems –
啊,不知道。是的,那麼使用它可能會更好。 – user405892