Comment puis-je trouver les doublons dans une liste Python et créer une autre liste des doublons ? La liste ne contient que des entiers.
Réponses
Trop de publicités?
Giorgos Myrianthous
Points
4215
Donc, en supposant que nous avons cette liste d'éléments :
a = [1, 2, 3, 2, 1, 5, 6, 5, 5, 5]
Nous pouvons travailler juste avec les ensembles afin de trouver le éléments uniques :
unique = set()
for num in a:
if num not in unique:
unique.add(num)
else:
unique = unique - set([num])
et enfin :
>>> unique
{3, 6}
Si vous voulez récupérer les doublons, il vous suffit de le faire :
>>> duplicates = set(a) - unique
>>> duplicates
{1, 2, 5}
Notes :
- La recherche d'éléments dans les ensembles est O(1)
- La suppression d'éléments dans les ensembles est O(1)
Just Me
Points
276
some_list = ['a', 'b', 'c', 'b', 'd', 'm', 'n', 'n']
some_dictionary = {}
for element in some_list:
if element not in some_dictionary:
some_dictionary[element] = 1
else:
some_dictionary[element] += 1
for key, value in some_dictionary.items():
if value > 1:
print(key, end = ' ')
# another way
duplicates = []
for x in some_list:
if some_list.count(x) > 1 and x not in duplicates:
duplicates.append(x)
print()
print(duplicates)
Fuente: ICI
SarthAk
Points
578
Utilisation de la fonction Set eg:-
arr=[1,4,2,5,2,3,4,1,4,5,2,3]
arr2=list(set(arr))
print(arr2)
Sortie:- [1, 2, 3, 4, 5]
- Suppression des doublons à l'aide d'un tableau
eg:-
arr=[1,4,2,5,2,3,4,1,4,5,2,3]
arr3=[]
for i in arr:
if(i not in arr3):
arr3.append(i)
print(arr3)
Sortie : -
[1, 4, 2, 5, 3]
- Utilisation de la fonction Lambda
eg:-
rem_duplicate_func=lambda arr:set(arr)
print(rem_duplicate_func(arr))
Sortie : -
{1, 2, 3, 4, 5}
- Suppression des valeurs dupliquées dans le dictionnaire
eg:-
dict1={
'car':["Ford","Toyota","Ford","Toyota"],
'brand':["Mustang","Ranz","Mustang","Ranz"] } dict2={} for key,value in dict1.items():
dict2[key]=set(value) print(dict2)
Sortie : -
{'voiture' : {'Toyota', 'Ford'}, 'marque' : {'Ranz', 'Mustang'}}
- Différence symétrique - Suppression des éléments en double
eg:-
set1={1,2,4,5}
set2={2,1,5,7}
rem_dup_ele=set1.symmetric_difference(set2)
print(rem_dup_ele)
Sortie : -
{4, 7}
user5909101
Points
11
- Réponses précédentes
- Plus de réponses
1 votes
Duplicata possible de Comment supprimer les doublons d'une liste en Python tout en préservant l'ordre ?
1 votes
Voulez-vous les duplicata une fois, ou à chaque fois qu'ils sont vus à nouveau ?
0 votes
Je pense que cette question a été traitée avec beaucoup plus d'efficacité ici. stackoverflow.com/a/642919/1748045 L'intersection est une méthode intégrée au jeu et devrait faire exactement ce qui est requis.