Un dictionnaire avec plusieurs valeurs maximales
d = {
'a': 1,
'b': 2,
'c': 3,
'd': 3,
'e': 2
}
Je veux traiter pour obtenir plusieurs clés ([c, d]
dans ce cas)
De @shiracamus
N'est-il pas plus simple de ne pas utiliser numpy?
by_shiracamus.py
d = {
'a': 1,
'b': 2,
'c': 3,
'd': 3,
'e': 2
}
#Trouvez la clé dont la valeur est 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)
beau!
keys_of_max_val = [clé pour clé, val dans d.items () if val == max_val]
J'aime le look, mais qu'en est-il de la vitesse ...
Vérifions-le même pendant votre temps libre ...
import numpy as np
d = {
'a': 1,
'b': 2,
'c': 3,
'd': 3,
'e': 2
}
#Obtenir la clé avec ndarray
keys = np.array([a[0] for a in d.items()])
#Obtenez de la valeur avec ndarray
values = np.array([a[1] for a in d.items()])
#Trouvez la clé dont la valeur est max
keys_of_max_val = keys[values == values.max()]
print(keys_of_max_val)
Je ne suis pas habitué à la notation d'inclusion!
['c' 'd']
Lorsqu'il n'y a qu'une seule valeur maximale
key_of_max_val = max(d.items(), key=(lambda x: x[1]))[0]
Même si vous pouvez l'obtenir avec, s'il y a de nombreuses valeurs maximales, cela deviendra gênant dès que possible.
Recommended Posts