0
votes

Supprimer des éléments en double d'un tableau basé sur la première entrée

Je sais qu'il est facile de supprimer des éléments en double d'une liste telle que:

lst = ['A', 'B', 'C', 'C', 'D', "D" ]

à l'aide de la méthode: xxx

Cependant, cette méthode ne fonctionne pas si la liste est composée de 2 listes d'éléments comme celle-ci. :

lst = [["A ',' 1 '], [' B ',' 2 '], [' B ',' 1 '], [' C ',' 3 '], [' c ',' 2 ']]]

Je voudrais supprimer toutes les entrées où le premier élément est dupliqué, laissant derrière la première instance de chacun quel que soit le deuxième élément. Donc, la sortie doit être: xxx


3 commentaires

Est-ce que cela répond à votre question? Supprimer des doublons dans des listes


Voulez-vous supprimer des doublons de la liste entière ou juste des doublons consécutifs, par exemple. Pour lst = [["A ', 1], [' B ', 2], [' A ', 2], [' A ', 2], [' A ', 3]] Le résultat serait [['A', 1], ['B', 2], ['A', 2]] ?


Je souhaite supprimer toute entrée où le premier élément est déjà apparu dans la liste. Donc, pour votre exemple, la sortie doit être [['A', '1'], ['B', '2']]]


3 Réponses :


0
votes

Vous pouvez essayer ceci:

>>> lst = [['a','1'],['b','2'],['b','1'],['c','3'],['c','2']]
>>> dict(lst)
{'a': '1', 'b': '1', 'c': '2'}

>>> [k for k,_ in dict(lst).items()]
['a', 'b', 'c']

>>> [[k,v] for k,v in dict(lst).items()]
[['a', '1'], ['b', '1'], ['c', '2']]


2 commentaires

@Giacomoalzetta êtes-vous sûr? La production attendue montre clairement que la première paire devrait être conservée.


@Riccardobucco oh mon mauvais. Qui écrit un exemple avec des séquences croissantes puis échangez simplement le dernier pour tromper les autres. Je vais supprimer mon commentaire.



0
votes
[['a', '1'], ['b', '2'], ['c', '3']]

0 commentaires

4
votes

Vous pouvez utiliser iTERTOOLS.GROUPBY : xxx

résultat: xxx


1 commentaires

Il convient de noter que cela nécessite que lst soit trié.