2017-01-28 5 views
1

Ich versuche, eine Reihe von Fragen mit ihren jeweiligen Themen zu erstellen und dann möchte ich dem Benutzer fragen, welche Fragen er studieren möchte. Abhängig von ihrer Antwort möchte ich dann nur diese Fragen anzeigen. (Zum Beispiel, wenn sie mit "Mathematik" antworten, möchte ich alle Fragen mit dem Thema "Mathematik" angezeigt werden)Bestimmte Artikel in Listen anzeigen

bisher habe ich diesen Code;

from collections import * 

question = [] 
topic = [] 

t = 4 

while t > 0: 
    x = input("what is your question?") 
    y = input("what is the topic?") 
    question.append(x) 
    topic.append(y) 
    data = defaultdict(list) 
    for topic, question in zip(topic, question): 
     data[topic].append(question) 

    t -= 1 

z = input("what topic would you like to study?") 
print(data[z]) 

, das jedoch bei der ersten Iteration funktioniert gut, wenn ich die Werte in der zweiten Iteration gebe diesen Fehler auftritt;

Traceback (letzter Anruf zuletzt): Datei "C: /Users/Sam/PycharmProjects/ComputingProject/lists.py", Zeile 11, in question.append (x) Attributen: 'str' -Objekt hat kein Attribut 'anhängen'

Warum funktioniert es beim zweiten Mal nicht?

+0

von Unterlassen Sie bitte die Art Ihrer Frage zu ändern, nachdem es gewesen sein Antworten gepostet. Einfache Folgefragen können in den Kommentaren gestellt werden; Komplizierteren Nacharbeiten würde besser gedient, wenn man eine neue Frage stellt. – glibdud

+0

@glibdud notiert. Danke – Seb

Antwort

3

zip erstellt Paare. In Ihrem Fall sollten Sie wahrscheinlich ein Diktat verwenden, das vom Thema auf eine Liste von Fragen zuordnet.

data = defaultdict(list) 
for topic, question in zip(topics, questions): 
    data[topic].append(question) 

Anmerkung: defaultdict ist eine Variation von dict (die Sie studieren zuerst sollten), die Überprüfung zu vermeiden, wenn ein Thema in der dict existiert bereits

+1

Ich denke, es ist erwähnenswert, dass 'dict' und' defaultdict (list) 'sind zwei verschiedene Arten –

+0

@AndreySobolev: getan –

+0

@blue_note Hallo, danke für die Hilfe, aber ich habe jetzt in ein anderes Problem gerannt. Ich habe die Frage oben geändert ^. Jede Hilfe wäre erwünscht – Seb