Я работаю над заданием, в котором мне нужно распечатать содержимое адресной книги, пронумеровав каждый элемент последовательно. Адресная книга - это вложенный словарь:

addressBook = {'Jim': {'name': 'James Marsh', 'address': '32 Morris Ave',
                           'phone': '6549873217'},
    'Leanne': {'name': 'Leanne Moss', 'address': '37 Shamrock Lane',
                           'phone': '1234567890'},
    'Chris': {'name': 'Christopher Philips', 'address': '49 Langley Court',
                           'phone': '3216549870'}}

Моя функция для перечисления содержимого в настоящее время выглядит так:

def listAll(addressBook):
    for key, value in addressBook.items():
        print(key)
        print(value['name'])
        print(value['address'])
        print(value['phone'])

Какие выводы

Jim
James Marsh
32 Morris Ave
654-987-3217

Leanne
Leanne Moss
37 Shamrock Lane
123-456-7890

Chris
Christopher Philips
49 Langley Court
321-654-9870

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

1    Jim
James Marsh
32 Morris Ave
654-987-3217

2    Leanne
Leanne Moss
37 Shamrock Lane
123-456-7890

3    Chris
Christopher Philips
49 Langley Court
321-654-9870

Я пытался

for index, key, value in enumerate(addressBook.items()):
    print(str(index+1) + '\t' + key)
    print(value['name'])
    print(value['address'])
    print(value['phone'] + '\n')

Но это дает ошибку ValueError: not enough values to unpack (expected 3, got 2). Как я могу это исправить?

1
Jim421616 13 Май 2018 в 07:28

1 ответ

Лучший ответ

Вы можете распаковать это с помощью:

for index, (key, value) in enumerate(addressBook.items()):
1
Stephen Rauch 13 Май 2018 в 04:30