多于2个值的Value错误调用

2024-09-26 17:48:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到这个值错误

ValueError: need more than 2 values to unpack)

我不知道这是什么意思

这是我的密码:

contact_map = {'Dennis Jones': ('989-123-4567', 'Dennis@gmail.com'), 'Susan': ('517-345-1234', 'susan_smith@anr.msu.edu'), 'Miller, Matthew': ('616-765-4321', 'matt@yahoo.com')}
FORM = "{:<s};{:<d};{:<s}"

out_file = input("Enter a name for the output file: ")
output_file= open(out_file, "w")

for name, phone, email in contact_map.items():
    output_file.write(FORM.format(name, phone, email))

output_file.close()

Tags: nameformcommapforoutputemail错误
3条回答

dict.items()返回一个包含键和值的元组。dict.items()的第一个元素是:

('Dennis Jones', ('989-123-4567', 'Dennis@gmail.com'))

解释器希望您将这个元组解压成两个值(一个用于'Dennis Jones',另一个用于('989-123-4567', 'Dennis@gmail.com'))。为了循环浏览这三个项目(姓名、电话和电子邮件),您可以通过在括号中包围phone, email来解压内部元组:

for name, (phone, email) in contact_map.items():
    output_file.write(FORM.format(name, phone, email))

调用dict.items()键和值时必须有两个。之后,你需要解包的价值部分,以便获得电话和电子邮件

for name, value in contact_map.items():
    phone = value[0]
    email = value[1]
    output_file.write(FORM.format(name, phone, email))

你得到这个错误是因为你试图解压一个len==3name, phone, email)的元组,但是items()返回(key, value),这里的value是长度为2的元组

您可以将其解包为一行,如下所示:

for name, (phone, email) in contact_map.items():

相关问题 更多 >

    热门问题