Python遍历值为列表的字典报错:ValueError: too many values to unpack
字典遍历报错:ValueError: too many values to unpack (expected 2)
问题背景
给定字典:
dict = {'john': [1,2], 'peter': [3,4], 'stacy': [5,6], 'chad': [7,8]}
期望输出:
john has 1 and 2
peter has 3 and 4
stacy has 5 and 6
chad has 7 and 8
编写的错误代码:
for keys, values in dict: print(f"{keys} has {values[0]} and {values[1]}")
运行后报错:
Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: too many values to unpack (expected 2)
问题原因
直接遍历字典时,默认只会迭代字典的键,每次循环拿到的是单个字符串(比如'john')。你试图把这个字符串拆成keys和values两个变量,字符串的字符数远多于2,因此触发解包错误。
修复方案
方案1:使用items()方法遍历键值对
items()方法会返回字典中所有键值对的元组,直接解包成keys和values即可:
dict = {'john': [1,2], 'peter': [3,4], 'stacy': [5,6], 'chad': [7,8]} for keys, values in dict.items(): print(f"{keys} has {values[0]} and {values[1]}")
方案2:遍历键后通过键取值
先遍历字典的键,再通过键获取对应的值:
dict = {'john': [1,2], 'peter': [3,4], 'stacy': [5,6], 'chad': [7,8]} for keys in dict: values = dict[keys] print(f"{keys} has {values[0]} and {values[1]}")
两种方案都能输出你想要的结果。
内容的提问来源于stack exchange,提问作者Tar-Eruntalion
相关产品推荐
相关产品推荐

