Перебор элементов словаря (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 шт):
i - это индекс, номер в списке. friends_names[0] обращается к нулевому (первому по порядку) предмету из списка, т.е. 'Аня' и т.д.
Неужели об индексации коллекций ещё ничего не изучали?
Дополню ответ MBo
В какой-то момент friends_names[i] станет равно "Лена". Тогда в словарь по ключу "Лена" добавится то, что лежит в friends_cities[i]. Так как индекс Лены в первом списке 3, то берется город с индексом 3, то есть Обнинск
Я просто оставлю это здесь:
friends_names = ['Аня', 'Коля', 'Лёша', 'Лена', 'Миша']
friends_cities = ['Владивосток', 'Красноярск', 'Москва', 'Обнинск', 'Чебоксары']
friends = {name: city for name, city in zip(friends_names, friends_cities)}
print ('Лена живёт в городе', friends.get('Лена'))
# Лена живёт в городе Обнинск