“太多的值解开”,迭代字典。 键=>string,值=>列表
我得到了'too many values to unpack'
错误'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
请参阅此答案以获取有关遍历字典的更多信息,例如跨越Python版本使用items()
。
编辑
由于Python 3 iteritems() 不再受支持 。 使用items()来代替。
for field, possible_values in fields.items(): print(field, possible_values)
对于Python 3.x iteritems
已被删除。 改用物品 。
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
对于列表,请使用枚举
在字段中,枚举(fields)中的possible_values: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)