2012-03-13 11 views
6

Tengo una pregunta simple (o eso creía).cómo eliminar una clave de un diccionario con el valor más alto?

tengo un diccionario, digamos que tiene este aspecto:

dict = {'A':100, 'a':10, 'T':50, 't':5} 

que simplemente quieren eliminar la clave con el valor más alto. He intentado esto:

del max(dict.values()) 

y este es el mensaje de error: 'Error de sintaxis: no puede eliminar llamada a la función'. quiero que el resultado final sea:

dict = {'a':10, 'T':50, 't':5} 

Respuesta

9

max(d.values()) le dará el valor máximo (100), sino para borrar una entrada de un diccionario que necesita la tecla correspondiente ('A').

Usted puede hacer esto:

d = {'A':100, 'a':10, 'T':50, 't':5} 
key_to_delete = max(d, key=lambda k: d[k]) 
del d[key_to_delete] 

Por cierto, no se debe nombrar a su diccionario dict porque ese es el nombre de un tipo incorporado.

Si puede haber múltiples entradas con el mismo valor máximo y que desea borrar todos ellos:

val_to_delete = max(d.values()) 
keys_to_delete = [k for k,v in d.iteritems() if v==val_to_delete] 
for k in keys_to_delete: 
    del d[k] 
+0

En lugar de 'lambda', también es posible usar' d .__ getitem__'. –

+1

@Michael: Es cierto, o 'd.get' como en la otra respuesta. – interjay

8

que necesita para obtener una bodega de la clave para el valor máximo.

probar este lugar:

del d[max(d, key=d.get)] 

Además, se debe evitar llamar la variable de dict porque las sombras de la incorporada en el nombre.

Cuestiones relacionadas