没有足够的值从字典项中解压:预期 3 个值,得到 2 个

Tim*_*val 5 python tuples python-3.x iterable-unpacking

每当我运行此代码时,python 都会给我:

ValueError:没有足够的值来解包(预期为 3,得到 2)

我正在尝试制作一种地址簿,您可以在其中添加、删除和更改信息。我试图更改第 20 行中存在for-in循环的代码(该行实际上是问题的根源),但没有给出任何结果。

members = {}

class Member:
    def __init__(self, name, email, number):
        self.name = name
        self.email = email
        self.number = number

    def addmember(name, email, number):
        members[name] = email, number
        print('Member {0} has been added to addressbook'.format(name))

    def Check():
        print("You've got {0} members in your addressbook".format(len(members)))
        for name, email, number in members.items(): #the problem is here
            print('Contact {0} has email:{1} and has number:{2}'.format(name, email, number))
            print('')

Member.addmember('Tim', 'email@mail.com', '43454')
Member.Check()
Run Code Online (Sandbox Code Playgroud)

ggo*_*len 4

该错误几乎告诉您发生了什么:您试图从列表中解压 3 个项目,但members.items()返回一dict_items类键值对,每个键值对看起来像

('Tim', ['email@mail.com', '43454'])
Run Code Online (Sandbox Code Playgroud)

您可以使用

name, info in members.items()
Run Code Online (Sandbox Code Playgroud)

其中是orinfo的元组(email, number)

name, (email, number) in members.items()
Run Code Online (Sandbox Code Playgroud)

将值元组直接解压缩为两个不同的变量。