首页 > 解决方案 > Python 错误:尝试从字典中打印响应时解包的值太多

问题描述

我正在尝试使用 for 循环打印出每个人及其响应,但不断收到错误“太多值无法解包”,我不知道为什么。我正在尝试完成 Python 教程中的练习。这是我的代码:

question = {'Kim':'Yes',
            'Sarah':'No',
            'Jake':'Maybe'}
for friends, answer in question:
    print("\nFriend:%s" % friends)
    print("Answer:%s" % answer)

这是我收到的错误:

ValueError                                Traceback (most recent call last)
<ipython-input-15-38fd8bb38999> in <module>
      8             'Sarah':'No',
      9             'Jake':'Maybe'}
---> 10 for friends, answer in question:
 11     print("\nFriend:%s" % friends)
 12     print("Answer:%s" % answer)

ValueError: too many values to unpack (expected 2)  

有人可以向我解释如何在使用 for 循环时准确检索列表中的响应。

标签: pythonloopsdictionaryfor-loop

解决方案


很简单——如果你调试你会看到“x in question”只返回键。添加 .items() 以获取元组(或 keys() 以显式获取键,或 values() 用于随机排序值)。

for friends, answer in question.items():
    print("Answer:%s" % answer)

退货

Answer:Yes
Answer:No
Answer:Maybe

如果你想调试你应该这样做并且你会看到它:

for x in question:
   print(x, type(x))

出去:

Kim <class 'str'>
Sarah <class 'str'>
Jake <class 'str'>

推荐阅读