Изучаем Python | страница 79



favorite_languages.py

favorite_languages = {

'jen': 'python',

'sarah': 'c',

'edward': 'ruby',

'phil': 'python',

}


(1) for name, language in favorite_languages.items():

(2) . .print(name.title() + "'s favorite language is " +

. . . .language.title() + ".")

Код в точке (1) приказывает Python перебрать все пары «ключ—значение» в словаре. В процессе перебора пар ключ сохраняется в переменной name, а значение — в переменной language. С этими содержательными именами намного проще понять, что делает команда print в точке (2).

Всего в нескольких строках кода выводится вся информация из ­опроса:

Jen's favorite language is Python.

Sarah's favorite language is C.

Phil's favorite language is Python.

Edward's favorite language is Ruby.

Такой способ перебора точно так же работает и в том случае, если в словаре будут храниться результаты опроса тысяч и даже миллионов людей.

Перебор всех ключей в словаре


Метод keys() удобен в тех случаях, когда вы не собираетесь работать со всеми значениями в словаре. Переберем словарь favorite_languages и выведем имена всех людей, участвовавших в опросе:

favorite_languages = {

'jen': 'python',

'sarah': 'c',

'edward': 'ruby',

'phil': 'python',

}

(1) for name in favorite_languages.keys():

. .print(name.title())

Строка (1) приказывает Python извлечь из словаря favorite_languages все ключи и последовательно сохранять их в переменной name. В выходных данных представлены имена всех людей, участвовавших в опросе:

Jen

Sarah

Phil

Edward

На самом деле перебор ключей используется по умолчанию при переборе словаря, так что этот код будет работать точно так же, как если бы вы написали

for name in favorite_languages:

вместо…

for name in favorite_languages.keys():

Используйте явный вызов метода keys(), если вы считаете, что он упростит чтение вашего кода, — или опустите его при желании.

Чтобы обратиться в цикле к значению, связанному с интересующим вас ключом, используйте текущий ключ. Для примера выведем для пары друзей сообщение о выбранном ими языке. Мы переберем имена в словаре, как это делалось ранее, но, когда имя совпадает с именем одного из друзей, программа будет выводить специальное сообщение об их любимом языке:

favorite_languages = {

'jen': 'python',

'sarah': 'c',

'edward': 'ruby',

'phil': 'python',

}


(1) friends = ['phil', 'sarah']

for name in favorite_languages.keys():

. .print(name.title())

. .

(2) . .if name in friends:

. . . .print(" Hi " + name.title() +

. . . . . .", I see your favorite language is " +