Изучаем Python | страница 80
(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!
Упорядоченный перебор ключей словаря
Словарь всегда поддерживает связь между ключом и связанным с ним значением, но порядок получения элементов из словаря непредсказуем. Впрочем, это не создает проблем, потому что обычно требуется лишь получить правильное значение, связанное с каждым ключом.
Один из способов получения элементов в определенном порядке основан на сортировке ключей, возвращаемых циклом for. Для получения упорядоченной копии ключей можно воспользоваться функцией sorted():
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in sorted(favorite_languages.keys()):
. .print(name.title() + ", thank you for taking the poll.")
Эта команда for не отличается от других команд for, если не считать того, что метод dictionary.keys() заключен в вызов функции sorted(). Эта конструкция приказывает Python выдать список всех ключей в словаре и отсортировать его перед тем, как перебирать элементы. В выводе перечислены все пользователи, участвовавшие в опросе, а их имена упорядочены по алфавиту:
Edward, thank you for taking the poll.
Jen, thank you for taking the poll.
Phil, thank you for taking the poll.
Sarah, thank you for taking the poll.
Перебор всех значений в словаре
Если вас прежде всего интересуют значения, содержащиеся в словаре, используйте метод values() для получения списка значений без ключей. Допустим, вы хотите просто получить список всех языков, выбранных в опросе, и вас не интересуют имена людей, выбравших каждый язык: