Maison  >  Article  >  développement back-end  >  Comment puis-je supprimer efficacement les dictionnaires en double d'une liste Python ?

Comment puis-je supprimer efficacement les dictionnaires en double d'une liste Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-26 13:30:10458parcourir

How Can I Efficiently Remove Duplicate Dictionaries from a Python List?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn