79 votes

Supprimer le dictionnaire de la liste

Si j’ai une liste de dictionnaires, dites :

et j’aimerais supprimer le dictionnaire avec de 2 (ou nom), quelle est la façon la plus efficace de procéder par programmation (c’est-à-dire que je ne connais pas l’index de l’entrée dans la liste donc il ne peut pas simplement être éclaté).

10voto

Voici une façon de le faire avec une compréhension de liste (en supposant que vous nommez votre liste « foo »):

Substitut `` ou quoi que ce soit, selon le cas.

`` fonctionne également :

``

Et si vous voulez un générateur, vous pouvez utiliser itertools:

``

Cependant, à partir de Python 3, `` retournera un itérateur de toute façon, donc la compréhension de la liste est vraiment le meilleur choix, comme Alex l’a suggéré.

8voto

fortran Points 26495

Ce n’est pas à proprement parler un anwser (car je pense que vous en avez déjà de très bons), mais... Avez-vous envisagé d’avoir un dictionnaire de `` au lieu d’une liste de dictionnaires?

7voto

Imagist Points 5348
<pre><code></code><p>Sera probablement plus rapide que les méthodes de compréhension de liste en moyenne car il ne parcourt pas toute la liste s’il trouve l’élément en question dès le début.</p></pre>

1voto

nixmind Points 323

Supposons que votre version de python soit 3.6 ou supérieure, et que vous n’ayez pas besoin de l’élément supprimé, ce serait moins cher...

Si les dictionnaires de la liste sont uniques :

Si vous souhaitez supprimer tous les éléments correspondants :

Vous pouvez également vous assurer que l’obtention de la clé id ne déclenchera pas d’erreur de clé, quelle que soit la version de python.

if dicts[i].get('id', Aucun) == 2

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X