'解包'的值太多,迭代字典。键=>字符串,值=>列表
我得到'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
您需要使用类似iteritems之类的东西。
for field, possible_values in fields.iteritems():
print field, possible_values
有关更多信息,请参见this answer通过字典迭代,如使用items()
,不同的Python版本。
EDIT
由于Python 3个中 iteritems()是no longer supported。使用项目()代替。
for field, possible_values in fields.items():
print(field, possible_values)
您想使用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
已被删除。改为使用items。
for field, possible_values in fields.items():
print(field, possible_values)
对于列表,用枚举
现场,在枚举POSSIBLE_VALUES(场): 打印(场,POSSIBLE_VALUES)
iteritems不会为列表工作对象
灿” t直接在字典中迭代。所以你可以通过转换成元组。
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)
请解释你的答案。 – 2017-10-18 07:52:31
不能直接在字典中迭代。所以你可以通过转换成元组。 – 2017-10-19 05:01:13
您在代码中缺少fields.iteritems()
。
你也可以用其他方式做到这一点,你可以通过字典中的键来获得值。
for key in fields:
value = fields[key]
至于为什么你需要这样做,迭代字典迭代通过键,而不是键/值对。 – 2011-03-29 00:35:53
@jeffm这是让我困惑的。我认为这是一个PHP的foreach。 – tipu 2011-03-29 16:23:38