“太多的值解开”,迭代字典。 键=>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)