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

Comment supprimer efficacement les dictionnaires en double d'une liste Python tout en préservant l'ordre ?

DDD
DDDoriginal
2024-11-30 15:27:10311parcourir

How to Efficiently Remove Duplicate Dictionaries from a Python List While Preserving Order?

Suppression des dictionnaires en double d'une liste en Python

Lors de la gestion d'une liste de dictionnaires, il est souvent nécessaire de supprimer les doublons partageant une clé identique. paires de valeurs. Cet article fournit une solution robuste utilisant Python.

Énoncé du problème :

Étant donné une liste de dictionnaires, l'objectif est de supprimer les dictionnaires qui contiennent la même clé et la même valeur. paires.

Solution :

Pour y parvenir, nous employons une méthode en deux étapes approche :

  1. Convertir les dictionnaires en tuples hachables :
    Nous convertissons chaque dictionnaire en un tuple où les éléments sont les paires clé-valeur. Cette étape est cruciale car les dictionnaires ne sont pas hachables, mais les tuples le sont.
  2. Supprimer les doublons à l'aide d'un ensemble :
    Nous créons un ensemble à partir de la liste des tuples. Un ensemble supprime automatiquement les doublons, ne laissant que des tuples uniques.

Pour reconstruire les dictionnaires à partir des tuples uniques, nous utilisons une compréhension de dictionnaire. Voici l'extrait de code :

original_list = [{'a': 123}, {'b': 123}, {'a': 123}]

# Convert dictionaries to tuples
tuples = [tuple(d.items()) for d in original_list]

# Remove duplicates using a set
unique_tuples = set(tuples)

# Reconstruct dictionaries
result_list = [dict(t) for t in unique_tuples]

print(result_list)

Sortie :

[{'a': 123}, {'b': 123}]

Préservation de la commande :

Si vous préservez l'original l'ordre des dictionnaires est essentiel, on peut utiliser un ordre légèrement différent approche :

  1. Créer un ensemble vu :
    Initialiser un ensemble appelé vu pour suivre les tuples uniques.
  2. Parcourir les dictionnaires :
    Parcourez la liste originale et pour chaque dictionnaire, convertissez-la en tuple. Si le tuple n'est pas dans l'ensemble vu, ajoutez-le et ajoutez le dictionnaire à la liste des résultats.

Voici le code :

original_list = [{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}, {'a': 123, 'b': 1234}]

seen = set()
result_list = []

for d in original_list:
    t = tuple(d.items())
    if t not in seen:
        seen.add(t)
        result_list.append(d)

print(result_list)

Sortie :

[{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}]

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