2017-08-02 1 views
-4

Ich lerne Python und versuche, eine Filmkollektion für meinen eigenen Gebrauch mit web.py zu erstellen.Python - vergleiche zwei Listen

Ich habe zwei Listen

movies_all = ["abc","xyz","opq"] 
movies_watched = ["xyz","pqr","cba"] 

Was ich will ist druckt alle Zeilen von movies_all in der endgültigen Ausgabe tun. So, wenn es eine Übereinstimmung in der Liste films_watched gibt, geben Sie Ja oder Nein aus. Zum Beispiel ist oben nur "xyz" üblich.

Vorzugsweise sollte die Ausgabe in einem einzigen Datentyp sein, zum Beispiel "Liste der Listen" oder Wörterbuch oder Liste der Tupel usw. Die Ausgabe soll in einer HTML-Tabelle wie der folgenden dargestellt werden.

Ausgang:

 
================ 
Movies| Watched | 
------|---------| 
abc |No  | 
xyz |Yes  | 
opq |No  | 

Die Tabelle in der Ausgabe ist nur für die Lesbarkeit zu verbessern und ist eigentlich nicht erforderlich.

Ich habe dies versucht, aber nicht in der Lage zur Ausgabe gewünschten Ergebnis

matches=[] 
print "start comparing" 
for item_a in movies_all: 
    for item_b in movies_watched: 
     if item_a == item_b: 
      matches.append(item_a) 
      matches.append("Yes") 
      #result=zip(movies_all,matches) -> Tried this but not getting desired output 

for i in range(4): 
    print("%s, %s" % (movies_all[i],matches)) 
+10

Sie sollten Ihren eigenen Versuch, dies zu kodieren, veröffentlichen, andernfalls wird Ihre Frage downvotes anziehen. Tipp: Um dies effizient zu erreichen, sollte 'movies_watched' ein' set' sein. –

+0

Verwenden Sie die Antwort, die jemand gepostet und dann tun: Importieren Pandas als PD, d = {'Filme': Filme}, df = PD.DataFrame (Daten = d) – sera

+0

@ PM2Ring Danke für die Information, praktisch mein erster Beitrag, fügte meine hinzu gescheiterten Versuch des Codes – Bharat

Antwort

1

Iterate durch eine Liste mit for...in... und mit in auf die anderen Liste zu vergleichen. Erstellen Sie Ihr Wörterbuch, indem Sie ein leeres Wörterbuch erstellen und jedem neuen Schlüssel einen Wert zuweisen. In Ihrem Beispiel haben Sie einen Schlüssel für jedes Element in films_all.

movies={} 
for movie in movies_all: 
    if movie in movies_watched: 
     movies[movie] = "yes" 
    else: 
     movies[movie] = "no" 
+0

@Bharat Dann tun: Pandas als pd importieren, d = {'beobachtet': Filme}, df = pd.DataFrame (Daten = d) – sera

+0

@ bennett-braun Danke das sieht aus wie ich war Auf der Suche nach. Ich konnte die gewünschte Ausgabe >>> für Schlüssel, Wert in movies.iteritems erhalten(): \t print ("% s% s" % (Schlüssel, Wert)) \t xyz ja abc keine opq no – Bharat

+0

Ist es möglich, die Reihenfolge von films_all beizubehalten, da ich die Reihenfolge der Änderungen beim Drucken der Werte bemerkt habe. Zum Beispiel mit größerem movies_all die Bestellliste unterscheidet mich von original: qwe keine xyz ja abc keine 124 keine opq ohne – Bharat