1238 Stimmen

Eindeutige Werte aus einer Liste in Python abrufen

Ich möchte die eindeutigen Werte aus der folgenden Liste abrufen:

['nowplaying', 'PBS', 'PBS', 'nowplaying', 'job', 'debate', 'thenandnow']

Die Ausgabe, die ich benötige, ist:

['nowplaying', 'PBS', 'job', 'debate', 'thenandnow']

Dieser Code funktioniert:

output = []
for x in trends:
    if x not in output:
        output.append(x)
print(output)

Gibt es eine bessere Lösung, die ich verwenden sollte?

4voto

Alaf Azam Punkte 101

Zusätzlich zu den vorherigen Antworten, die besagen, dass Sie Ihre Liste in ein Set umwandeln können, können Sie das auch auf diese Weise tun

mylist = [u'nowplaying', u'PBS', u'PBS', u'nowplaying', u'job', u'debate', u'thenadnow']
mylist = [i for i in set(mylist)]

wird die Ausgabe

[u'nowplaying', u'job', u'debate', u'PBS', u'thenadnow']

obwohl die Ordnung nicht aufrechterhalten wird.

Eine andere, einfachere Antwort könnte lauten (ohne Verwendung von Mengen)

>>> t = [v for i,v in enumerate(mylist) if mylist.index(v) == i]
[u'nowplaying', u'PBS', u'job', u'debate', u'thenadnow']

2voto

Tung Nguyen Punkte 1368

Set ist eine Sammlung von Unbestellte y einzigartig Elemente. Sie können also set wie unten verwenden, um eine eindeutige Liste zu erhalten:

unique_list = list(set([u'nowplaying', u'PBS', u'PBS', u'nowplaying', u'job', u'debate', u'thenandnow']))

2voto

phanindravarma Punkte 1177

Sie können Sets verwenden. Nur um das klarzustellen, erkläre ich, was der Unterschied zwischen einer Liste und einem Set ist. Sets sind ungeordnete Sammlungen von eindeutigen Elementen, Listen sind geordnete Sammlungen von Elementen. Also,

    unicode_list=[u'nowplaying', u'PBS', u'PBS', u'nowplaying', u'job',u'debate', u'thenandnow']
    list_unique=list(set(unicode_list))
    print list_unique
[u'nowplaying', u'job', u'debate', u'PBS', u'thenandnow']

Aber: Verwenden Sie bei der Benennung der Variablen nicht list/set. Das führt zu einem Fehler: EX: Verwenden Sie stattdessen list anstelle von unicode_list im obigen Beispiel.

list=[u'nowplaying', u'PBS', u'PBS', u'nowplaying', u'job',u'debate', u'thenandnow']
        list_unique=list(set(list))
        print list_unique
    list_unique=list(set(list))
TypeError: 'list' object is not callable

2voto

Goran B. Punkte 534

Set verwenden, um eine Liste zu de-duplizieren, Rückgabe als Liste

def get_unique_list(lst):
        if isinstance(lst,list):
            return list(set(lst))

2voto

Sanjar Stone Punkte 864
  1. Erklären Sie zu Beginn Ihres Codes die Ausgabeliste einfach als leer: output=[]
  2. Anstelle Ihres Codes können Sie diesen Code verwenden trends=list(set(trends))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X