我收到此值错误
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()
答案 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_id
(len==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))