Python - '解压缩的值太多','list没有属性'iteritems''

时间:2014-01-27 04:23:44

标签: python

我正在尝试比较两个字符串:devLinefin_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中的单词匹配。我要比较的单词是替代词,例如carbikehousecondo。我想将这些字词与cardcdcdc进行比较。如果单词相同,则打印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,这种方式似乎更容易打印falsedc

1 个答案:

答案 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'

请注意,为每对打印truefalse可能不是最有用的行为。您可能只想打印一个值来汇总所有对是否匹配,或者您可能想要创建一个布尔比较值列表,或者您可能想要做其他事情。