Maison > développement back-end > Tutoriel Python > Comment puis-je supprimer les dictionnaires en double d'une liste Python tout en préservant ou en ignorant l'ordre ?

Comment puis-je supprimer les dictionnaires en double d'une liste Python tout en préservant ou en ignorant l'ordre ?

Susan Sarandon
Libérer: 2024-11-28 00:21:10
original
233 Les gens l'ont consulté

How Can I Remove Duplicate Dictionaries from a Python List While Preserving or Ignoring Order?

Suppression des dictionnaires en double d'une liste en Python

Étant donné une liste de dictionnaires, l'objectif est de supprimer tous les dictionnaires qui partagent une clé identique. paires de valeurs. Par exemple, transformer la liste [{'a' : 123}, {'b' : 123}, {'a' : 123}] en [{'a' : 123}, {'b' : 123}] atteindre cet objectif.

Pour y parvenir, vous pouvez utiliser une technique simple mais puissante :

[dict(t) for t in {tuple(d.items()) for d in l}]
Copier après la connexion

Cette approche fonctionne dans trois domaines distincts étapes :

  1. Convertissez chaque dictionnaire en un tuple, où le tuple stocke les paires clé-valeur du dictionnaire.
  2. Transformez la liste des tuples en un ensemble, en supprimant efficacement les doublons puisque les ensembles ne peuvent pas contenir plusieurs instances de la même valeur.
  3. Reconstruisez les dictionnaires à partir des tuples à l'aide de dict() fonction.

Les variables dans l'extrait de code représentent les éléments suivants :

  • l : La liste originale des dictionnaires
  • d : Un dictionnaire individuel au sein de la list
  • t : un tuple représentant les paires clé-valeur de ce dictionnaire

Si vous conservez l'original l'ordre des dictionnaires est crucial, vous pouvez utiliser l'approche modifiée suivante :

seen = set()
new_l = []
for d in l:
    t = tuple(d.items())
    if t not in seen:
        seen.add(t)
        new_l.append(d)
Copier après la connexion

Ce code intègre une étape supplémentaire de maintenance d'un ensemble vu pour suivre quels tuples (et donc dictionnaires) ont déjà été rencontrés. Si un tuple n'est pas trouvé dans l'ensemble vu, il est ajouté à l'ensemble et le dictionnaire correspondant est ajouté à la liste new_l.

Il est important de noter que la comparaison directe des dictionnaires en utilisant l'égalité (==) peut ne pas toujours produire le résultat souhaité si les dictionnaires ont été modifiés de différentes manières. Si l'ordre des paires clé-valeur est important, il est recommandé de trier les éléments du 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal