Comment supprimer les doublons d'une liste en Python

Découvrez comment supprimer les doublons d'une liste en Python tout en conservant ou en ignorant l'ordre. Comparez les conversions d'ensembles, les clés de dict et les méthodes de boucle.

Essayez cette solution dans l'éditeur

Aperçu

Les données en double s'infiltrent fréquemment dans les listes via des extractions de bases de données, des interactions d'utilisateurs ou des agrégations de journaux. La suppression de ces doublons est une étape fondamentale de nettoyage des données qui garantit l’unicité et empêche la redondance dans la logique en aval. Python propose plusieurs techniques pour y parvenir, allant des conversions d'ensembles rapides aux opérations basées sur des boucles qui respectent l'ordre des éléments.

Le moyen le plus rapide et le plus courant d'éliminer les éléments en double consiste à convertir la liste en un « ensemble » à l'aide du constructeur « set() », puis à la reconvertir en liste. Étant donné que les ensembles ne peuvent pas contenir de valeurs en double, ce processus supprime automatiquement les doublons. L’inconvénient de cette approche est que les ensembles ne sont pas ordonnés, ce qui signifie que la séquence originale des éléments est perdue.

Pour conserver l'ordre d'origine des éléments tout en supprimant les doublons,Python 3.7+ propose une solution intelligente utilisant la classe de dictionnaire intégrée : `list(dict.fromkeys(my_list))`. Étant donné que les clés du dictionnaire sont uniques et préservent l’ordre d’insertion, cette méthode déduplique efficacement les éléments tout en gardant la séquence intacte. Pour les critères personnalisés ou les anciennes versions de Python, une boucle manuelle utilisant un ensemble d'assistance pour suivre les éléments vus est également très efficace.

Sortie de code et d'exécution

Ce script illustre la déduplication d'éléments de liste à l'aide d'ensembles, de clés de dictionnaire et de boucles manuelles.

deduplicate_list.py
Essayez dans l'éditeur
numbers = [2, 1, 2, 3, 1, 4]

# Method 1: Using set() (Unordered)
unique_unordered = list(set(numbers))
print("Unordered unique:", unique_unordered)

# Method 2: Using dict.fromkeys() (Preserves order)
unique_ordered = list(dict.fromkeys(numbers))
print("Ordered unique:", unique_ordered)

# Method 3: Using a loop with a seen helper
seen = set()
unique_loop = []
for item in numbers:
    if item not in seen:
        seen.add(item)
        unique_loop.append(item)
print("Loop unique:", unique_loop)
Sortie terminale
Unordered unique: [1, 2, 3, 4]
Ordered unique: [2, 1, 3, 4]
Loop unique: [2, 1, 3, 4]

Mise en œuvre étape par étape

  • Convertissez la liste en un ensemble pour supprimer instantanément les doublons à l'aide de set(my_list).
  • Utilisez list(dict.fromkeys(my_list)) pour supprimer les doublons tout en préservant l'ordre d'insertion.
  • Utilisez un assistant défini dans une boucle pour filtrer les doublons si vous avez besoin d'une validation personnalisée.

Foire aux questions

Quelle méthode est la plus rapide pour les grandes listes ?

La conversion en un ensemble est la plus rapide en raison des optimisations au niveau C, suivie de près par dict.fromkeys().

Comment dédupliquer une liste de dictionnaires ?

Puisque les dictionnaires ne peuvent pas être hachés, vous ne pouvez pas utiliser directement les ensembles. Vous devez utiliser un filtrage de compréhension de boucle ou de liste par ID/clés uniques.

Sujets connexes

Ressources Python recommandées

Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.