本文翻译自:'too many values to unpack', iterating over a dict. key=>string, value=>list
I am getting the 'too many values to unpack'
error. 我收到'too many values to unpack'
错误。 Any idea how I can fix this? 知道我该如何解决吗?
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楼
参考:https://stackoom.com/question/mW7g/太多的价值无法解包-遍历一个字典-键-gt-字符串-值-gt-列表
#2楼
For Python 3.x iteritems
has been removed. 对于Python 3.x, iteritems
项目已删除。 Use items instead. 改用物品 。
for field, possible_values in fields.items():
print(field, possible_values)
#3楼
For lists, use enumerate
对于列表,请使用enumerate
for field, possible_values in enumerate(fields):
print(field, possible_values)
iteritems
will not work for list objects iteritems
不适用于列表对象
#4楼
Can't be iterating directly in dictionary. 不能直接在字典中进行迭代。 So you can through converting into tuple . 这样就可以通过转换为元组了 。
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)
#5楼
you are missing fields.iteritems()
in your code. 您在代码中缺少fields.iteritems()
。
You could also do it other way, where you get values using keys in the dictionary. 您也可以采用其他方式,即使用字典中的键获取值。
for key in fields:
value = fields[key]
#6楼
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)