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

DDD
Libérer: 2024-11-26 11:05:11
original
698 Les gens l'ont consulté

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

Suppression des dictionnaires en double dans une liste en Python

Lorsque vous travaillez avec des listes de dictionnaires, il peut être nécessaire de supprimer les doublons en fonction d'une clé identique -paires de valeurs. Cet article fournira des conseils détaillés sur la façon d'y parvenir à l'aide des fonctions intégrées de Python et d'une approche plus efficace qui préserve l'ordre des dictionnaires.

Utiliser des ensembles pour la déduplication

Une approche consiste à convertir chaque dictionnaire en un tuple de ses éléments. Étant donné que les tuples peuvent être hachés, ils peuvent être utilisés comme clés dans un ensemble pour identifier les dictionnaires en double. Le code Python suivant illustre cette méthode :

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

Ce code parcourt la liste originale des dictionnaires (old_list) et crée un ensemble de tuples représentant les éléments de chaque dictionnaire. L'ensemble supprime automatiquement les doublons. L'ensemble résultant est ensuite reconverti en une liste de dictionnaires à l'aide d'une compréhension de dictionnaire.

Préserver l'ordre avec une logique personnalisée

Cependant, si l'ordre des dictionnaires est important, la méthode ci-dessus ne le fera pas le préserver. Pour y parvenir, l'approche alternative suivante est recommandée :

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

Ce code crée un ensemble de tuples représentant les éléments ordonnés dans chaque dictionnaire. La fonction sorted() garantit que les éléments sont dans un ordre cohérent. L'ensemble sert ensuite à exclure les tuples en double et la liste résultante conserve l'ordre d'origine du dictionnaire.

Gestion des dictionnaires imbriqués

Si les dictionnaires contiennent des dictionnaires imbriqués, le code fourni nécessite une légère modification pour aplatir le structures imbriquées. L'extrait de code suivant illustre ceci :

def flatten_dict(d):
    new_d = {}
    for k, v in d.items():
        if isinstance(v, dict):
            v = flatten_dict(v)
            for k2, v2 in v.items():
                new_d[f'{k}.{k2}'] = v2
        else:
            new_d[k] = v
    return new_d

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

Conclusion

Dans cet article, nous avons exploré deux manières de supprimer les dictionnaires en double d'une liste en Python : utiliser des ensembles pour la déduplication et conserver l'original. commande avec une logique personnalisée. Le choix de la méthode dépend des exigences spécifiques de la tâche.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal