'解包'的值太多,遍历字典。键=祝辞字符串值=祝辞列表

我得到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
647664 次浏览

Python 3

使用items()

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

Python 2

使用iteritems()

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

有关遍历字典的更多信息,请参阅这个答案,例如跨Python版本使用items()

作为参考,iteritems()在Python 3中被移除

你想要使用iteritems。这将返回字典上的迭代器,它将为您提供一个元组(键,值)

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

您的问题是循环遍历字段,这将返回字典的键。

>>> for field in fields:
...     print field
...
first_names
last_name

对于Python 3。x iteritems已被删除。请改用项目

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

对于列表,使用enumerate

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

iteritems将不适用于列表对象

不能直接在字典中迭代。所以你可以通过转换为元组

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)

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

你也可以用另一种方式,使用字典中的键来获取值。

for key in fields:
value = fields[key]

在Python3中,不再支持iteritems()

使用.items

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

我就想把这个扔进去。我有“太多的值要解包(预期2)”;今天突然出现。令人恼火,但这是由于在选择列表中缺少一个逗号。

CapTextureChoices = [
("initial", ""),
("Shaggy", "Shaggy"),
("Wrinkled", "Wrinkled"),
("Striate," "Striate"),
("Downy", "Downy")
]

Striate和Striate之间缺少逗号;“Striate"是罪魁祸首吗