116
Глава 6 •
Словари
менной
language
. С этими содержательными именами намного проще понять, что
делает
команда
print
в точке
.
Всего в нескольких строках кода выводится вся информация из опроса:
Jen's favorite language is Python.
Sarah's favorite language is C.
Edward's favorite language is Ruby.
Phil's favorite language is Python.
Такой способ перебора точно так же работает и в том случае, если в словаре будут
храниться результаты опроса тысяч и даже миллионов людей.
Перебор
всех ключей в словаре
Метод
keys()
удобен в тех случаях, когда вы не собираетесь работать со всеми
значениями в словаре. Переберем словарь
favorite_languages
и выведем имена
всех людей, участвовавших в опросе:
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
❶
for name in favorite_languages.keys():
print(name.title())
Строка
приказывает Python извлечь из словаря
favorite_languages
все ключи
и последовательно сохранять их в переменной
name
. В выходных данных представ-
лены
имена всех людей, участвовавших в опросе:
Jen
Sarah
Edward
Phil
На самом деле перебор ключей используется по умолчанию при переборе словаря,
так что этот код будет работать точно так же,
как если бы вы написали
for name in favorite_languages:
вместо…
for name in favorite_languages.keys():
Используйте явный вызов метода
keys()
, если вы считаете, что он упростит чтение
вашего кода, или опустите его при желании.
Перебор
словаря
117
Чтобы обратиться в цикле к значению, связанному с интересующим вас ключом,
используйте текущий ключ. Для примера выведем для пары друзей сообщение о
выбранном ими языке. Мы переберем имена в словаре, как это делалось ранее, но
когда имя совпадает с именем одного из друзей, программа будет выводить специ-
альное сообщение об их любимом языке:
favorite_languages = {
...
}
❶
friends = ['phil', 'sarah']
for name in favorite_languages.keys():
print(name.title())
❷
if name in friends:
❸
language = favorite_languages[name].title()
print(f"\t{name.title()}, I see you love {language}!")
В точке
строится список друзей, для которых должно выводиться сообщение.
В цикле выводится имя очередного участника опроса, а затем в точке
программа
проверяет, входит ли текущее имя в список
friends
. Если имя входит в список, вы-
водится специальное приветствие с упоминанием
выбранного языка
.
Выводятся
все имена, но для наших друзей выводится специальное сообщение:
Hi Jen.
Hi Sarah.
Sarah, I see you love C!
Hi Edward.
Hi Phil.
Phil, I see you love Python!
Метод
keys()
также может использоваться для проверки того, участвовал ли кон-
кретный человек в опросе:
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
❶
if 'erin' not in favorite_languages.keys():
print("Erin, please take our poll!")
Метод
keys()
не ограничивается перебором: он возвращает список всех ключей,
и строка
просто проверяет, входит ли ключ
'erin'
в список. Так как ключ в спи-
ске
отсутствует, программа выводит сообщение:
Erin, please take our poll!