Dictionnaires uniques dans les listes Python
Les listes de dictionnaires sont courantes dans les applications Python. Cependant, la gestion des dictionnaires en double peut s'avérer difficile. Cet article explique comment supprimer efficacement les doublons et obtenir une liste de dictionnaires uniques.
Considérez une liste de dictionnaires :
<code class="python">L = [ {'id': 1, 'name': 'john', 'age': 34}, {'id': 1, 'name': 'john', 'age': 34}, {'id': 2, 'name': 'hanna', 'age': 30} ]</code>
Approche du problème
Pour dédupliquer une liste de dictionnaires, une approche simple consiste à parcourir la liste et à comparer chaque dictionnaire aux autres. Cependant, ce processus peut être coûteux en termes de calcul pour les grandes listes.
Utilisation d'un dictionnaire temporaire
Une solution plus efficace exploite un dictionnaire temporaire pour gérer la déduplication. La clé du dictionnaire est définie sur le champ id de chaque dictionnaire et la valeur est définie sur le dictionnaire lui-même. Cette opération filtre efficacement les doublons car chaque identifiant unique correspondra à une seule entrée du dictionnaire.
Récupération des dictionnaires uniques
Une fois le dictionnaire temporaire renseigné, les valeurs (qui représentent les dictionnaires uniques) peuvent être récupérés à l'aide de la méthode values().
Implémentation de Python
Python 2.7 :
<code class="python">{v['id']:v for v in L}.values()</code>
Python 3 :
<code class="python">list({v['id']:v for v in L}.values())</code>
Python 2.5/2.6 :
<code class="python">dict((v['id'],v) for v in L).values()</code>
Ces solutions concises aboutissent à une liste de solutions uniques dictionnaires :
<code class="python">[ {'id': 1, 'name': 'john', 'age': 34}, {'id': 2, 'name': 'hanna', 'age': 30} ]</code>
Cette approche supprime efficacement les doublons en exploitant un dictionnaire temporaire pour identifier et extraire les valeurs de dictionnaire uniques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!