我得到了太多的值来解包错误。知道我该怎么补救吗?

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。X iteritems已被移除。用物品代替。

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

其他回答

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中被删除。

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

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)

你需要使用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

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

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

for key in fields:
    value = fields[key]

对于Python 3。X iteritems已被移除。用物品代替。

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