"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment supprimer efficacement les dictionnaires en double d’une liste Python ?

Comment supprimer efficacement les dictionnaires en double d’une liste Python ?

Publié le 2024-11-07
Parcourir:497

How to Efficiently Remove Duplicate Dictionaries from a Python List?

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 :

L = [
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 2, 'name': 'hanna', 'age': 30}
]

Approche du problème

Pour dédoublonner une liste de dictionnaires, une approche simple consiste à parcourir la liste et à comparer chaque dictionnaire aux autres. Toutefois, 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 de 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 Python

Python 2.7 :

{v['id']:v for v in L}.values()

Python 3 :

list({v['id']:v for v in L}.values())
:v pour v dans L}.values())

Python 2.5/2.6:

dict((v['id'],v) for v in L).values()
dict((v['id' ],v) pour v dans L).values()

Ces solutions concises aboutissent à une liste de dictionnaires uniques :
dict((v['id'],v) for v in L).values()
[ {'id' : 1, 'nom' : 'john', 'age' : 34}, {'id' : 2, 'nom' : 'hanna', 'âge' : 30} ]

Cette approche supprime efficacement les doublons en exploitant un dictionnaire temporaire pour identifier et extraire les valeurs de dictionnaire uniques.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3