Comment supprimer un plus grand nombre d'éléments de dictionnaire qui ne sont pas dans une liste? Par exemple, il y a un dictionnaire dct
et une liste `lst:
dct = {'a' : 2, 'b' : 4, 'c' : 6, 'd' : 7}
lst = ['a', 'c']
Quel serait le moyen le plus efficace de filtrer le dictionnaire afin qu'il aboutisse:
dct.items()
Production:
dict_items([('a', 2), ('c', 6)])
Merci!
Est-il obligatoire de faire muter le dictionnaire existant ou de produire un nouveau dictionnaire plus petit est-il acceptable?
Si vous pouvez produire un nouveau dictionnaire, la formulation de votre question pourrait vous diriger vers la fonction de filtrage de Python, que vous implémenteriez dans le sens de (en supposant que key_list
la liste des valeurs clés que vous souhaitez conserver):
new_dict = filter(lambda pair: pair[0] in key_list, old_dict)
Vous pouvez également le faire avec une compréhension de dictionnaire, comme:
new_dict = { key : value for (key, value) in old_dict if key in key_list }
Si vous devez absolument muter le dictionnaire original, il existe des moyens de le faire en une seule ligne en Python, mais ils ne seraient pas tout à fait clairs pour un programmeur Python, donc je le ferais probablement en boucle:
for key in old_dict:
if key not in key_list:
del old_dict[key]
Cela fonctionne en Python 2 mais pas en Python 3 où la suppression à l'intérieur de la boucle for interrompra l'itération. Pour Python 3 (je pense), vous devez faire quelque chose comme:
del_keys = [ key for key in old_dict if key not in key_list ]
for key in del_keys:
del old_dict[key]
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots