Изучаем Python | страница 82
• Создайте список людей, которые должны участвовать в опросе по поводу любимого языка программирования. Включите некоторые имена, которые уже присутствуют в списке, и некоторые имена, которых в списке еще нет.
• Переберите список людей, которые должны участвовать в опросе. Если они уже прошли опрос, выведите сообщение с благодарностью за участие. Если они еще не проходили опрос, выведите сообщение с предложением принять участие.
Вложение
Иногда нужно сохранить множество словарей в списке или сохранить список как значение элемента словаря. Создание сложных структур такого рода называется вложением. Вы можете вложить множество словарей в список, список элементов в словарь или даже словарь внутрь другого словаря. Как наглядно показывают следующие примеры, вложение — чрезвычайно мощный механизм.
Список словарей
Словарь alien_0 содержит разнообразную информацию об одном пришельце, но в нем нет места для хранения информации о втором пришельце, не говоря уже о целом экране, забитом пришельцами. Как смоделировать флот вторжения? Например, можно создать список пришельцев, в котором каждый элемент представляет собой словарь с информацией о пришельце. Следующий код строит список из трех пришельцев:
aliens.py
alien_0 = {'color': 'green', 'points': 5}
alien_1 = {'color': 'yellow', 'points': 10}
alien_2 = {'color': 'red', 'points': 15}
(1) aliens = [alien_0, alien_1, alien_2]
for alien in aliens:
. .print(alien)
Сначала создаются три словаря, каждый из которых представляет отдельного пришельца. В точке (1) каждый словарь заносится в список с именем aliens. Наконец, программа перебирает список и выводит каждого пришельца:
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}
Конечно, в реалистичном примере будут использоваться более трех пришельцев, которые будут генерироваться автоматически. В следующем примере функция range() создает флот из 30 пришельцев:
# Создание пустого списка для хранения пришельцев.
aliens = []
# Создание 30 зеленых пришельцев.
(1) for alien_number in range(30):
(2) . .new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
(3) . .aliens.append(new_alien)
. .
# Вывод первых 5 пришельцев:
(4)for alien in aliens[:5]:
. .print(alien)
print("...")
# Вывод количества созданных пришельцев.
(5)print("Total number of aliens: " + str(len(aliens)))
В начале примера список для хранения всех пришельцев, которые будут созданы, пуст. В точке (1) функция range() возвращает множество чисел, которое просто сообщает Python, сколько раз должен повторяться цикл. При каждом выполнении цикла создается новый пришелец (2), который затем добавляется в список aliens (3). В точке (4) срез используется для вывода первых пяти пришельцев, а в точке (5) выводится длина списка (для демонстрации того, что программа действительно сгенерировала весь флот из 30 пришельцев):