Python 尝试匹配两个列表中的索引时出现值错误

Python 尝试匹配两个列表中的索引时出现值错误,python,list,indexing,Python,List,Indexing,我正在尝试用Python编写一些简单的抽认卡(还在学习!) 我可以读入文本文件,分为两个列表(关键字和定义),找到一个随机关键字(chosenKeyword),并从关键字列表返回关键字及其索引值,但当我尝试使用该索引值时(第二个列表中的索引值与我在同一时间逐行读取的索引值完全相同)为了匹配定义列表,我不断得到一个ValueError告诉我该项不在列表中(当我手动检查时就是这样)。问题出在我的可能的回答函数中,但我无法确定它是什么-任何帮助都会很好 # declare an empty list

我正在尝试用Python编写一些简单的抽认卡(还在学习!)

我可以读入文本文件,分为两个列表(关键字和定义),找到一个随机关键字(
chosenKeyword
),并从关键字列表返回关键字及其索引值,但当我尝试使用该索引值时(第二个列表中的索引值与我在同一时间逐行读取的索引值完全相同)为了匹配定义列表,我不断得到一个
ValueError
告诉我该项不在列表中(当我手动检查时就是这样)。问题出在我的
可能的回答
函数中,但我无法确定它是什么-任何帮助都会很好

# declare an empty list for answers
answers = []

if keyword.index(chosenKey) == define.index(chosenKey):
    answers.append()
else:
    pass


# find the matching definition for the keyword and add to the answer list

wrongAnswers = random.sample(define,2)
while define.index(chosenKey) != wrongAnswers:
    answers.append(wrongAnswers)
    print(answers)
list.index()
返回列表中给定值的索引:

>>> ['spam', 'ham', 'eggs'].index('ham')
1
>>> ['spam', 'ham', 'eggs'].index('monty')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'monty' is not in list
>>> ['spam', 'ham', 'eggs'][1]
'ham'
但在列表中找不到项目时,会引发
ValueError

>>> ['spam', 'ham', 'eggs'].index('ham')
1
>>> ['spam', 'ham', 'eggs'].index('monty')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 'monty' is not in list
>>> ['spam', 'ham', 'eggs'][1]
'ham'
如果要将两个列表的元素配对,请改用:


我认为您在显示的代码中存在一些问题

这是第一个:

if keywords.index(chosenKey) == definitions.index(chosenKey):
据我所知,您希望将正确答案添加到您的答案列表中

我会这样做:

if chosenKey in keywords:
    answers.append(definitions[keywords.index(chosenKey)])
else:
    pass
第二部分似乎有人试图得到两个随机选项,其中一个应该是正确答案

wrongAnswers = random.sample(define,2)
while definitions[keywords.index(chosenKey)] not in wrongAnswers:        
    wrongAnswers = random.sample(define,2)
answers = wrongAnswers
print(answers)

请发布一个。我不太确定你在做什么,但是
答案.append()
看起来不太好。定义.index(chosenKey)!=错误答案感谢您的帮助,我理解值错误的含义以及它与索引的关系。我不明白为什么如果我从列表1中得到一个索引值(我检查的是一个int),我就不能从列表2中得到该索引位置的实际值。我已经尝试过你的建议,但不断地出现与逗号“if kw,definition in zip(关键字,define):”相关的错误,并且无法使其正常工作。@user2127168:啊,那是因为其中有一个拼写错误;我的意思是,这是一个
for
循环。我很抱歉。感谢您的帮助,这个解决方案对我来说最有效,尽管我仍然在尝试让它按我所希望的方式工作。除非我改变它,否则我无法使建议的if语句起作用。我发现在线Python教程对于查看列表和变量中发生的事情非常有用-再次感谢。