Почему итератор python выводит только первое ключ-значение словаря?

Есть код итерации словаря, при выполнении которого итератор проходит только по первым ключ-значениям, хотя в словаре их больше. Почему так и как это исправить?

Код

address_book_file = open("address_book_file", "rb")  # Открытие файла с словарем
dict_contact = pickle.load(address_book_file)  #Загрузка файла
for name, address in dict_contact.items():  # Итерация словаря
    print(dict_contact)   # Весь словарь
    print(name, address)  # Вывод итерации

Вывод

{'Mom': '[email protected]', 'Dad': '[email protected]', 'Sam': '[email protected]', 'kek': '[email protected]'}
Mom [email protected]

p.s Пробовал играться с keys() и values(), но всё тщетно

upd

Больше кода

def search_contact():
    address_book_file = open("address_book_file", "rb")
    file_empty = os.path.getsize("address_book_file") == 0
    if not file_empty:
        search_name = input("Введите имя для поиска: ")
        dict_contact = pickle.load(address_book_file)
        for name, address in dict_contact.items():
            print(dict_contact)
            print(name, address)
            if search_name == name:
                print('\nКонтакт: {0}, с адресом {1}'.format(search_name, dict_contact[name]))
            else:
                print('Этого здесь нет')
                return
    else:
        print('Нет контактов')
    address_book_file.close()

Ответы (1 шт):

Автор решения: CrazyElf

Итерация у вас завершается досрочно из-за return в блоке else:

else:
    print('Этого здесь нет')
    return # после этого итерация прекращается

Лучше не перебирать все ключи словаря для поиска нужного ключа, а сразу моментально проверить наличие ключа в словаре (для чего словари собственно и предназначены):

if search_name in dict_contact:
    print('\nКонтакт: {0}, с адресом {1}'.format(search_name, dict_contact[search_name]))
else:
    print('Этого здесь нет')

И файл лучше открывать с помощью менеджера контекста, тогда он потом закроется автоматически по завершении блока кода:

with open("address_book_file", "rb") as address_book_file:
    # остальной код
→ Ссылка