[英]Python - 'too many values to unpack', and 'list has no attribute 'iteritems''
我正在尝试比较两个字符串: devLine
和fin_h
。 当我在两个字符串中拆分单词并在两个字符串中遍历单词时,我总是收到错误too many values to unpack
。
如果我像其他SO帖子所述添加iteritems()
,则会出现此错误: list has no attribute 'iteritems'
。
字符串是:
Rob car Mary bike George House Jerry Condo
Rob car Mary dc George dc Jerry dc
我想检查string1中的单词是否与string2中的单词匹配。 我要比较的词是car
, bike
, house
, condo
等替代词。 我想将这些词与car
, dc
, dc
, dc
。 如果单词相等,则输出true
,否则输出false
。 如果单词tuple是(bike, dc)
,则仍然打印出true,因为dc
表示可以接受作为输入的任何值。
我的代码如下所示:
def compareLines(devLine, final_hypoth):
devSplit = devLine.split()
hypSplit = final_hypoth.split()
for word in hypSplit.iteritems():
#if hword != "?":
print word
我也尝试过使用zip()
函数,因为使用它似乎更pythonic:
def compareLines(devLine, final_hypoth):
devSplit = devLine.split()
hypSplit = final_hypoth.split()
wordSet = [" ".join(tup for tup in zip(devSplit[1::2], hypSplit[1::2])]
# what to do next?
这会以(car, car)
, (bike dc)
, (house dc)
, (condo, dc)
的数组一起打印出两个字符串中的奇数词。 但是,如何比较这两个值? 如果两个单词相等或两个比较都包含dc
则此方法似乎更容易打印true
或false
。
用zip
循环成对单词:
for word1, word2 in zip(devSplit[1::2], hypSplit[1::2]):
if word1 == word2 or word2 == 'dc':
print 'true'
else:
print 'false'
请注意,为每对打印true
或false
可能不是最有用的行为。 您可能只想打印一个汇总所有对是否都匹配的值,或者您想创建一个布尔比较值列表,或者可能要做其他事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.