Недостаточно значений для распаковки из элементов словаря: ожидается 3 значения, получено 2 - PullRequest
2 голосов
/ 11 июня 2019

Всякий раз, когда я запускаю этот код, 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()

1 Ответ

5 голосов
/ 11 июня 2019

Ошибка в значительной степени говорит о том, что происходит: вы пытаетесь распаковать 3 элемента из списка, но members.items() возвращает класс dict_items пар ключ-значение, каждая из которых выглядит как

('Tim', ['email@mail.com', '43454'])

Вы можете использовать

name, info in members.items()

, где info - это кортеж (email, number) или

name, (email, number) in members.items()

, чтобы напрямую распаковать кортеж значения в две различные переменные.

...