Esto es realmente sólo es fácil de explicar con un ejemplo, para quitar la intersección de una lista desde el interior de un diccionario que suelo hacer algo como esto:Extracción de un subconjunto de un diccionario de dentro de una lista
a = {1:'', 2:'', 3:'', 4:''}
exclusion = [3, 4, 5]
# have to build up a new list or the iteration breaks
toRemove = []
for var in a.iterkeys():
if var in exclusion:
toRemove.append(var)
for var in toRemove:
del a[var]
Esto podría parecer un ejemplo inusual, pero es sorprendente la cantidad de veces que he tenido que hacer algo como esto. Hacer esto con conjuntos sería mucho mejor, pero claramente quiero retener los 'valores' para el dict.
Este método es molesto porque requiere dos bucles y una matriz adicional. ¿Hay una manera más limpia y más eficiente de hacer esto?
Oh, esto es mucho mejor que mi respuesta. – SpoonMeiser
buen consejo, dict.pop es olvidado a menudo. – camflan
Puede usar cualquier valor en lugar de None: deleted = [d.pop (k, 0) para k en exclusión] – jfs