Ein Wörterbuch mit mehreren Maximalwerten
d = {
'a': 1,
'b': 2,
'c': 3,
'd': 3,
'e': 2
}
Ich möchte verarbeiten, um mehrere Schlüssel zu erhalten ([c, d]
in diesem Fall)
Von @shiracamus
Ist es nicht einfacher, Numpy nicht zu verwenden?
by_shiracamus.py
d = {
'a': 1,
'b': 2,
'c': 3,
'd': 3,
'e': 2
}
#Suchen Sie den Schlüssel, dessen Wert max
max_val = max(d.values())
keys_of_max_val = [key for key in d if d[key] == max_val]
print(keys_of_max_val)
wunderschönen!
keys_of_max_val = [Schlüssel für Schlüssel, Wert in d.items () wenn val == max_val]
Ich mag das Aussehen, aber was ist mit der Geschwindigkeit ...
Lassen Sie es uns auch in Ihrer Freizeit überprüfen ...
import numpy as np
d = {
'a': 1,
'b': 2,
'c': 3,
'd': 3,
'e': 2
}
#Holen Sie sich den Schlüssel mit ndarray
keys = np.array([a[0] for a in d.items()])
#Holen Sie sich Wert mit ndarray
values = np.array([a[1] for a in d.items()])
#Suchen Sie den Schlüssel, dessen Wert max
keys_of_max_val = keys[values == values.max()]
print(keys_of_max_val)
Ich bin nicht an die Einschlussnotation gewöhnt!
['c' 'd']
Wenn es nur einen Maximalwert gibt
key_of_max_val = max(d.items(), key=(lambda x: x[1]))[0]
Auch wenn Sie es mit bekommen können, wenn es viele Maximalwerte gibt, wird es so schnell wie möglich problematisch.
Recommended Posts