Перебор элементов словаря (Yandex.Parktikum)

4 тема, 4 урок. Нам дана задача:

Научите Анфису собирать словарь friends с нуля. Вам дано два списка: friends_names , имена друзей, и friends_cities — их города. Списки соответствуют друг другу: friends_names[0] живёт в городе friends_cities[0]. Напечатайте на экран сообщение "Лена живёт в городе <город>", используя доступ по ключу в словаре friends.

Подсказка:

Перебрать значения одновременно в двух списках вам поможет функция range(0, len(friends_names)) и доступ к элементам списка по индексу: friends_cities[i]. Новые пары в словарь добавьте через доступ по ключу.

p.s нашел ответ в интернете:

friends_names = ['Аня', 'Коля', 'Лёша', 'Лена', 'Миша']
friends_cities = ['Владивосток', 'Красноярск', 'Москва', 'Обнинск', 'Чебоксары']

friends = {}
for i in range (len(friends_names)):
    friends[friends_names[i]] = friends_cities [i]

print ('Лена живёт в городе', friends['Лена'])

ВОПРОС:

Не МОГУ понять, зачем на делать это через 'Range'?? И как нам переменная [i] дала именно ЛЕНУ и ОБНИНСК? Объясните пожалуйста!


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

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

i - это индекс, номер в списке. friends_names[0] обращается к нулевому (первому по порядку) предмету из списка, т.е. 'Аня' и т.д.

Неужели об индексации коллекций ещё ничего не изучали?

→ Ссылка
Автор решения: handowl

Дополню ответ MBo

В какой-то момент friends_names[i] станет равно "Лена". Тогда в словарь по ключу "Лена" добавится то, что лежит в friends_cities[i]. Так как индекс Лены в первом списке 3, то берется город с индексом 3, то есть Обнинск

→ Ссылка
Автор решения: Namerek

Я просто оставлю это здесь:

friends_names = ['Аня', 'Коля', 'Лёша', 'Лена', 'Миша']
friends_cities = ['Владивосток', 'Красноярск', 'Москва', 'Обнинск', 'Чебоксары']

friends = {name: city for name, city in zip(friends_names, friends_cities)}

print ('Лена живёт в городе', friends.get('Лена'))

# Лена живёт в городе Обнинск
→ Ссылка