显示列表中的某些项

时间:2017-01-28 12:45:46

标签: python list

我正在尝试使用各自的主题创建一组问题,然后我想询问用户他们想要学习哪些问题。根据他们的反应我然后想要显示那些问题。 (例如,如果他们回答“数学”,我想要显示所有关于“数学”主题的问题)

到目前为止,我有这段代码;

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])   

在第一次迭代时工作正常但是当我在第二次迭代中输入值时会发生此错误;

追踪(最近一次通话):   文件“C:/Users/Sam/PycharmProjects/ComputingProject/lists.py”,第11行,在     question.append(x)的 AttributeError:'str'对象没有属性'append'

为什么它第二次不起作用?

1 个答案:

答案 0 :(得分:3)

zip创建对。在您的情况下,您应该使用dict,从主题映射到问题列表。

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

注意:defaultdictdict的变体(您应该先学习),以避免检查dict中是否已存在某个主题