我正在尝试比较两个字符串:devLine
和fin_h
。
当我在两个字符串中拆分单词并迭代两个字符串中的单词时,我不断收到错误too many values to unpack
。
如果我像其他提及的帖子一样添加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
。如果单词元组为(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)
。但是,如何比较这两个值呢?如果两个单词相同或者两个比较包含true
,这种方式似乎更容易打印false
或dc
。
答案 0 :(得分:1)
使用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
可能不是最有用的行为。您可能只想打印一个值来汇总所有对是否匹配,或者您可能想要创建一个布尔比较值列表,或者您可能想要做其他事情。