我得到了太多的值来解包错误。知道我该怎么补救吗?
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
我得到了太多的值来解包错误。知道我该怎么补救吗?
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
Python 3
使用项目()。
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中被删除。
你需要使用iteritem。这将返回字典上的迭代器,它将为您提供一个元组(键,值)
>>> 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)
iteritem对列表对象不起作用
不能直接在字典中迭代。你可以通过转换成元组。
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”是罪魁祸首