解包值过多',遍历字典时的键值对

405 投票
8 回答
658449 浏览
提问于 2025-04-16 14:36

我遇到了一个错误,提示是 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

8 个回答

40

你想使用 iteritems。这个方法会返回一个字典的迭代器,它会给你一个包含键和值的元组(key, value)。

>>> 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
89

在Python 3.x版本中,iteritems这个功能已经被去掉了。你可以用items来代替它。

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

Python 3

使用 items() 方法。

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中被移除了

撰写回答