¿Cómo se eliminan todos los elementos del diccionario cuya clave es un elemento de una lista?Eliminar todos los elementos del diccionario cuya clave es un elemento de una lista
Respuesta
No sé nada sobre Python, pero supongo que puede recorrer una lista y eliminar las entradas por clave del diccionario?
[Nota: Esta no es una respuesta directa, pero se da la especulación anterior de que la pregunta parece una tarea. Yo quería proporcionar ayuda que ayudará a resolver el problema, mientras que aprender de ella]
Descomponer el problema que es:
- cómo conseguir un elemento de una lista
- Cómo eliminar una clave : valor en el diccionario de
Más ayuda:
¿Cómo obtener todos los elementos de una lista en python?
Para el bucle funciona en todas las secuencias y la lista es una secuencia.
for key in sequence: print key
¿Cómo se elimina un elemento en el diccionario?
utilice el método del (clave).
Usted debe ser capaz de combinar las dos tareas.
No respondió la pregunta.Puede haberlo señalado en la dirección correcta, pero no todos quieren buscar conocimiento mientras intentan hacer algo rápidamente en el trabajo. – Will
@Will: lo entiendo. Fui uno de los primeros en responder esta pregunta. Y de la conversación, parecía que este era un problema de tarea. En Stackoverflow, disuadimos de responder la pregunta a menos que se hayan mostrado algunos intentos. Pensé que había proporcionado una buena dirección que lo mantendría en una buena posición en lugar de proporcionar una solución de cortar y pegar. Espero que el contexto ayude. – pyfunc
map(dictionary.__delitem__, lst)
Solo es útil si todo el lst está en el diccionario; de lo contrario, obtendrás un KeyError en algún punto del camino. Pruebe: 'map (dictionary .__ delitem__, filter (dictionary .__ contains__, lst))' (Aunque, en verdad, no soy un gran fan de usar 'map' o list comps como suplentes para loops normales) – PaulMcG
@ Paul: Creo que Gnibbler pensó que la respuesta era más o menos correcta, pero en su mayor parte inapropiada para la tarea ... :) – tzot
Sí, he hecho lo mismo con otras preguntas sobre la tarea. – PaulMcG
for key in list_:
if key in dict_:
del dict_[key]
bueno, no sabía que pudieras hacer esto. pensé que tenías que usar has_key. ¡Gracias! Por cierto, del dict_ [k] probablemente debería ser del dict_ [clave], ¿verdad? – si28719e
@blackkettle: en Python 3 'key in dict_' es en realidad la única forma de comprobar si un dict tiene alguna clave determinada - se ha eliminado el método' has_key() '. –
@blackkettle ¡Sip! Oops – rossipedia
newdict = dict(
(key, value)
for key, value in olddict.iteritems()
if key not in set(list_of_keys)
)
tarde (como a finales de 2012):
keys = set(list_of_keys)
newdict = dict(
(key, value)
for key, value in olddict.iteritems()
if key not in keys
)
O si utiliza un diccionario 2.7+ pitón comprensión:
keys = set(list_of_keys)
newdict = {
key: value
for key, value in olddict.iteritems()
if key not in keys
}
O tal vez incluso una pitón 2.7 diccionario comprensión más una intersección de conjuntos en las teclas:
required_keys = set(olddict.keys()) - set(list_of_keys)
return {key: olddict[key] for key in required_keys}
Oh sí, el problema podría muy bien haber sido que tenía la condición invertido para calcular las claves necesarias.
Debe mover 'set (list_of_keys)' fuera del ciclo –
d = {'one':1, 'two':2, 'three':3, 'four':4}
l = ['zero', 'two', 'four', 'five']
for k in frozenset(l) & frozenset(d):
del d[k]
for i in lst:
if i in d.keys():
del(d[i])
Esto construirá una lista o un iterador para 'd.keys()' en cada paso. Solo necesita hacer 'si yo en d:' esta será la forma más corta y eficiente de hacerlo, y ya existe la respuesta de esta manera. –
- 1. Eliminar todos los elementos de una lista
- 2. Encontrar los elementos del diccionario cuyos partidos una subcadena clave
- 3. Método de lista para eliminar el último elemento de la lista, así como todos los elementos
- 4. Eliminar una clave del diccionario por nombre de clave
- 5. C# - Lista - eliminar todos los elementos pero NO los primeros
- 6. Eliminar todos los elementos dentro de linearlayout
- 7. Eliminar todos los elementos después de cierto elemento
- 8. Eliminar todos los atributos de un elemento basado en una lista blanca
- 9. Cómo eliminar la lista vista de todos los elementos
- 10. ¿Cómo contar todos los elementos en un diccionario anidado?
- 11. todos los elementos en una lista
- 12. Python: eliminar muchos elementos de una lista
- 13. ¿Cómo eliminar todos los elementos excepto el primer elemento de la lista desplegable en C#?
- 14. ¿Puedo definir un mapa cuya clave es una estructura?
- 15. Es posible eliminar todos los eventos asociados a un elemento y sus elementos secundarios
- 16. Obtener todos los elementos de un ArrayAdapter
- 17. ¿Cómo puedo eliminar todos los elementos secundarios del elemento del cuerpo con DOMDocument?
- 18. ¿Eliminar todos los elementos vacíos de un hash/YAML?
- 19. ¿Cómo busco elementos cuya colección contiene otro elemento en Grails?
- 20. Deseleccionar todos los elementos en un cuadro de lista
- 21. Actualizar todos los elementos en una lista usando PowerShell
- 22. ¿El método clear() del diccionario elimina todos los objetos relacionados con los elementos de la memoria?
- 23. Prolog eliminar elementos múltiples de una lista
- 24. ¿Cómo eliminar todos los elementos de ListBox?
- 25. ¿Cómo eliminar todos los elementos nulos dentro de una lista genérica de una vez?
- 26. ¿Por qué Dictionary.Add sobrescribe todos los elementos en mi diccionario?
- 27. borrar clave, pares de valores de un diccionario dada una lista de claves para eliminar
- 28. ¿Cómo accedo a los elementos del diccionario?
- 29. Eliminar elementos de una lista en otra
- 30. Rails 3 eliminar todos los elementos de una matriz
Es esta tarea? ¿Puedes mostrarnos lo que tienes hasta ahora? – SingleNegationElimination