Pour supprimer l'intersection d'une liste à l'intérieur d'un dict, je procède généralement de la manière suivante :
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]
Cet exemple peut sembler inhabituel, mais il est surprenant de constater le nombre de fois où j'ai eu à faire quelque chose de ce genre. Faire cela avec des ensembles serait beaucoup plus agréable, mais je veux clairement conserver les "valeurs" pour le dict.
Cette méthode est gênante car elle nécessite deux boucles et un tableau supplémentaire. Existe-t-il une méthode plus propre et plus efficace ?