值错误调用超过2个值

时间:2015-11-05 01:14:32

标签: python dictionary

我收到此值错误

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()

3 个答案:

答案 0 :(得分:4)

调用dict.items()键和值时必须存在两个。之后,您需要按顺序解包值部分以获取电话和电子邮件。

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

答案 1 :(得分:4)

您收到错误是因为您尝试解包nurse_idlen==3)的元组,但name, phone, email返回items(),其中在这种情况下,(key, value)是一个长度为2的tup。

您可以在一行中解压缩,如:

value

答案 2 :(得分:2)

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