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}]
Cette approche fonctionne dans trois domaines distincts étapes :
Les variables dans l'extrait de code représentent les éléments suivants :
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)
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!