Je sais comment supprimer une entrée, 'key'
de mon dictionnaire d
en toute sécurité. Tu le fais :
if d.has_key('key'):
del d['key']
Cependant, je dois supprimer plusieurs entrées d'un dictionnaire en toute sécurité. Je pensais définir les entrées dans un tuple, car j'aurai besoin de le faire plus d'une fois.
entities_to_remove = ('a', 'b', 'c')
for x in entities_to_remove:
if x in d:
del d[x]
Cependant, je me demandais s'il n'y avait pas une façon plus intelligente de faire cela ?
3 votes
Le temps de récupération d'un dictionnaire est presque O(1) à cause du hachage. À moins que vous ne supprimiez une proportion importante des entrées, je ne pense pas que vous fassiez beaucoup mieux.
1 votes
La réponse de @mattbornski semble plus canonique, et aussi plus succincte.
2 votes
StackOverflow a parlé :
key in d
est plus pythique qued.has_key(key)
stackoverflow.com/questions/1323410/has-key-or-in0 votes
Si vous disposez d'un peu de mémoire, vous pouvez faire ce qui suit
for x in set(d) & entities_to_remove: del d[x]
. Cela ne sera probablement plus efficace que sientities_to_remove
est "large".