Maison > Article > développement back-end > Comment puis-je supprimer efficacement les dictionnaires en double d'une liste Python ?
Suppression des dictionnaires en double d'une liste en Python
Lorsque vous traitez des listes de dictionnaires en Python, vous pouvez rencontrer le besoin de supprimer les doublons. Que les doublons partagent des paires clé-valeur identiques ou un ordre clé-valeur précis, une approche efficace est nécessaire.
Utiliser le hachage pour la suppression des doublons
Le one-liner suivant supprime efficacement les dictionnaires en double en fonction de leurs paires clé-valeur :
[dict(t) for t in {tuple(d.items()) for d in l}]
Cette approche consiste à convertir chaque dictionnaire en un tuple de ses paires clé-valeur. Étant donné que les tuples peuvent être hachés, vous pouvez exploiter la structure de données définie pour éliminer les doublons. L'ensemble résultant contient des tuples uniques, qui sont ensuite reconvertis en dictionnaires.
Préserver l'ordre
Si l'ordre des dictionnaires est important, l'approche ci-dessus ne suffira pas. Au lieu de cela, une méthode plus explicite peut être utilisée :
l = [{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}, {'a': 123, 'b': 1234}] seen = set() new_l = [] for d in l: t = tuple(d.items()) if t not in seen: seen.add(t) new_l.append(d) print(new_l)
Ce code accumule les dictionnaires non dupliqués dans une nouvelle liste tout en conservant leur ordre d'origine. Il utilise un ensemble pour garder une trace des tuples rencontrés afin de garantir l'unicité.
Remarque :
Il est important de noter que dans certains cas, deux dictionnaires avec des clés et des valeurs identiques peut ne pas donner le même tuple. Cela se produit lorsque les dictionnaires ont des séquences d'ajout/suppression de clés différentes. Si cela pose problème dans votre scénario, pensez à trier les éléments de chaque dictionnaire avant de créer le tuple.
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!