Supprimer les doublons dans une liste tout en gardant son ordonnance (Python)
C'est en fait une extension de cette question. Les réponses de cette question n'a pas pu maintenir "l'ordre" de la liste après la suppression des doublons. Comment faire pour supprimer ces doublons dans une liste (python)
biglist =
[
{'title':'U2 Band','link':'u2.com'},
{'title':'Live Concert by U2','link':'u2.com'},
{'title':'ABC Station','link':'abc.com'}
]
Dans ce cas, le 2ème élément doit être supprimé, parce que le précédent "u2.com" l'élément existe déjà. Toutefois, l'ordre doit être maintenu.
InformationsquelleAutor TIMEX | 2009-10-11
Vous devez vous connecter pour publier un commentaire.
Ma réponse à votre autre question, qui vous a complètement ignoré!, montre vous vous trompez en affirmant que
Probablement le plus rapide approche, pour une très grande liste, si vous souhaitez préserver l'ordre exact des éléments qui restent, est la suivante...:
[:]
sur la gauche remplacé tous les éléments dans la liste, au lieu de la liste elle-même. Elle pourrait avoir un effet par exemple si vous faites cela à l'intérieur d'une fonction à une liste qui est passé: si vous modifier de la liste, il est modifié en dehors de la fonction, si vous remplacer, puis l'extérieur de la liste n'est pas affectée). Dans ce cas particulier, il n'y a pas d'effet visible que je peux voir.utilisez set(), puis re-trier à l'aide de l'index de la liste d'origine.
Générateurs sont grands.
key=lambda item: item
à la signature de la méthode. Ensuite, utilisezkey(item)
pour le jeu.Cette page décrit les différentes méthodes et leurs vitesses:
http://www.peterbe.com/plog/uniqifiers-benchmark
Recommandée* méthode:
*par cette page
C'est un élégant et compact, avec une compréhension de liste (mais pas aussi efficace qu'avec dictionnaire):
Et dans le contexte de la réponse:
produit
Notez qu'ici, j'ai utilisé un dictionnaire. Cela rend le test
not in dups
beaucoup plus efficace que l'utilisation d'une liste.sortie sera:
['aaa', 'aba', 'aaa', 'aea', 'baa', 'aaa', 'aac', 'aaa']
['aaa', 'aba', 'aea', 'baa', 'aac"]
Un moyen super facile à faire c'est:
Ce n'est pas la manière la plus efficace, parce que:
Cependant, par des gestes simples (pas plus de quelques centaines d'articles, et non pas critique pour les performances), il est suffisant.
Je pense que l'utilisation d'un ensemble doit être assez efficace.
Je pense que cela devrait venir en O(nlog(n))