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.
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}]
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.
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)
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.
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}]
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!