我收到'too many values to unpack'错误。知道我该如何解决吗?

first_names = ['foo', 'bar']
last_names = ['gravy', 'snowman']

fields = {
    'first_names': first_names,
    'last_name': last_names,
}        

for field, possible_values in fields:  # error happens on this line              


#1 楼

Python 2
您需要使用类似iteritems的内容。 br />因为不再支持Python 3 items()。请改用iteritems()
for field, possible_values in fields.iteritems():
    print field, possible_values


评论


至于为什么需要这样做,遍历字典将遍历键,而不是键/值对。

–杰夫·梅卡多(Jeff Mercado)
2011-3-29在0:35

@jeffm令我困惑。我将其视为PHP foreach。

–tipu
2011-3-29在16:23

#2 楼

对于Python 3.x,iteritems已被删除。请改用物品。

for field, possible_values in fields.items():
    print(field, possible_values)


#3 楼

您要使用迭代项。这会在字典上返回一个迭代器,从而为您提供一个元组(键,值)
字典。

>>> for field, values in fields.iteritems():
...     print field, values
... 
first_names ['foo', 'bar']
last_name ['gravy', 'snowman']


#4 楼

对于列表,请使用enumerate

for field, possible_values in enumerate(fields):
    print(field, possible_values)


iteritems不适用于列表对象

评论


至少应该是python 2.7的正确答案(经过测试)。

–粪
19年5月13日在17:36

#5 楼

不能直接在字典中进行迭代。这样就可以通过转换为元组了。

first_names = ['foo', 'bar']
last_names = ['gravy', 'snowman']

fields = {
    'first_names': first_names,
    'last_name': last_names,
         } 
tup_field=tuple(fields.items())
for names in fields.items():
     field,possible_values = names
     tup_possible_values=tuple(possible_values)
     for pvalue in tup_possible_values:
           print (field + "is" + pvalue)


评论


请解释您的答案。

– Maciej Jureczko
17-10-18在7:52

不能直接在字典中进行迭代。因此您可以通过转换为元组。

– satya narayan pardhi
17-10-19在5:01

#6 楼

您的代码中缺少fields.iteritems()

#7 楼

在Python3中,不再支持iteritems()
使用.items
for field, possible_values in fields.items():
    print(field, possible_values)


评论


据我所知,enumerate()实际上将索引存储在字段所在的位置。

–Jesse Reza Khorasanee
20年7月22日在6:15



#8 楼

data = (['President','George','Bush','is','.'],['O','B-PERSON','I-PERSON','O','O'])
corpus = []
for(doc,tags) in data:
    doc_tag = []
    for word,tag in zip(doc,tags):
        doc_tag.append((word,tag))
        corpus.append(doc_tag)
        print(corpus)


评论


欢迎使用Stack Overflow!通常,如果答案包括对代码意图的解释,以及为什么不引入其他代码就能解决问题的原因,则答案会更有帮助。

–蒂姆·迪克曼(Tim Diekmann)
18年4月4日在8:33