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

We use cookies. Read the Privacy and Cookie Policy

Метод 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 " +

(3) . . . . . .favorite_languages[name].title() + "!")

В точке (1) строится список друзей, для которых должно выводиться сообщение. В цикле выводится имя очередного участника опроса, а затем в точке (2) программа проверяет, входит ли текущее имя в список друзей. Если имя входит в список, выводится специальное приветствие с упоминанием выбранного языка. Чтобы получить язык в точке (3), мы используем имя словаря и текущее значение name как ключ. Имя выводится для всех участников, но только друзья получают еще и специальное сообщение:

Edward

Phil

Hi Phil, I see your favorite language is Python!

Sarah

Hi Sarah, I see your favorite language is C!

Jen

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

favorite_languages = {

. .'jen': 'python',

. .'sarah': 'c',

. .'edward': 'ruby',

. .'phil': 'python',

. .}

(1) if 'erin' not in favorite_languages.keys():

. .print("Erin, please take our poll!")

Метод keys() не ограничивается перебором: он возвращает список всех ключей, и строка (1) просто проверяет, входит ли ключ 'erin' в список. Так как ключ в списке отсутствует, программа выводит сообщение:

Erin, please take our poll!