una metodos lista eliminar elementos ejemplo diccionarios diccionario dentro convertir python python-2.7

python - metodos - Eliminar un elemento del diccionario si la clave existe



lista dentro de un diccionario python (3)

Esta pregunta ya tiene una respuesta aquí:

¿Hay alguna otra forma de eliminar un elemento en un diccionario solo si la clave dada existe, que no sea:

if key in mydict: del mydict[key]

El escenario es que me dan una colección de claves para eliminar de un diccionario determinado, pero no estoy seguro de si todas ellas existen en el diccionario. En caso de que pierda una solución más eficiente.


Enfoque: calcular claves para eliminar, mutar dict

Llamemos a las keys la lista / iterador de claves que se le han asignado para eliminar. Yo haría esto:

keys_to_remove = set(keys).intersection(set(mydict.keys())) for key in keys_to_remove: del mydict[key]

Calcules por adelantado todos los artículos afectados y los operas.

Enfoque: calcular las claves para mantener, crear nuevas dict con esas claves

Prefiero crear un nuevo diccionario sobre la mutación de uno existente, por lo que probablemente también considere esto:

keys_to_keep = set(mydict.keys()) - set(keys) new_dict = {k: v for k, v in mydict.iteritems() if k in keys_to_keep}

o:

keys_to_keep = set(mydict.keys()) - set(keys) new_dict = {k: mydict[k] for k in keys_to_keep}


Puedes usar dict.pop :

mydict.pop("key", None)

Tenga en cuenta que si el segundo argumento, es decir, None no se proporciona, KeyError se KeyError si la clave no está en el diccionario. Proporcionar el segundo argumento evita la excepción condicional.


También hay:

try: del mydict[key] except KeyError: pass

Esto solo hace 1 búsqueda en lugar de 2. Sin embargo, con la except cláusulas son caras, entonces si termina presionando la cláusula de excepción con frecuencia, esto probablemente será menos eficiente que lo que ya tiene.