Эта конструкция возвращает значение, связанное с ключом 'color', из словаря alien_0:
green
Количество пар «ключ—значение» в словаре не ограничено. Например, вот как выглядит исходный словарь alien_0 с двумя парами «ключ—значение»:
alien_0 = {'color': 'green', 'points': 5}
Теперь программа может получить значение, связанное с любым из ключей в alien_0: color или points. Если игрок сбивает корабль пришельца, для получения заработанных им очков может использоваться код следующего вида:
alien_0 = {'color': 'green', 'points': 5}
(1) new_points = alien_0['points']
(2)print("You just earned " + str(new_points) + " points!")
После того как словарь будет определен, код (1) извлекает значение, связанное с ключом 'points', из словаря. Затем это значение сохраняется в переменной new_points. Строка (2) преобразует целое значение в строку и выводит сообщение с количеством заработанных очков:
You just earned 5 points!
Если этот код будет выполняться каждый раз, когда игрок сбивает очередного пришельца, программа будет получать правильное количество очков.
Добавление новых пар «ключ—значение»
Словари относятся к динамическим структурам данных: в словарь можно в любой момент добавлять новые пары «ключ—значение». Для этого указывается имя словаря, за которым в квадратных скобках следует новый ключ с новым значением.
Добавим в словарь alien_0 еще два атрибута: координаты x и y для вывода изображения пришельца в определенной позиции экрана. Допустим, пришелец должен отображаться у левого края экрана, в 25 пикселах от верхнего края. Так как система экранных координат обычно располагается в левом верхнем углу, для размещения пришельца у левого края координата x должна быть равна 0, а координата y — 25:
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
(1) alien_0['x_position'] = 0
(2)alien_0['y_position'] = 25
print(alien_0)
Программа начинается с определения того же словаря, с которым мы уже работали ранее. После этого выводится «снимок» текущего состояния словаря. В точке (1) в словарь добавляется новая пара «ключ—значение»: ключ 'x_position' и значение 0. То же самое делается для ключа 'y_position' в точке (2). При выводе измененного словаря мы видим две дополнительные пары «ключ—значение»:
{'color': 'green', 'points': 5}
{'color': 'green', 'points': 5, 'y_position': 25, 'x_position': 0}
Окончательная версия словаря содержит четыре пары «ключ—значение». Первые две определяют цвет и количество очков, а другие две — координаты. Обратите внимание: порядок пар «ключ—значение» не соответствует порядку их добавления. Python не интересует, в каком порядке добавлялись пары; важна лишь связь между каждым ключом и его значением.
Создание пустого словаря
В некоторых ситуациях бывает удобно (или даже необходимо) начать с пустого словаря, а затем добавлять в него новые элементы. Чтобы начать заполнение пустого словаря, определите словарь с пустой парой фигурных скобок, а затем добавляйте новые пары «ключ—значение» (каждая пара в отдельной строке). Например, вот как строится словарь alien_0:
alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)
Программа определяет пустой словарь alien_0, после чего добавляет в него значения для цвета и количества очков. В результате создается словарь, который использовался в предыдущих примерах:
{'color': 'green', 'points': 5}
Обычно пустые словари используются при хранении данных, введенных пользователем, или при написании кода, автоматически генерирующего большое количество пар «ключ—значение».
Изменение значений в словаре
Чтобы изменить значение в словаре, укажите имя словаря с ключом в квадратных скобках, а затем новое значение, которое должно быть связано с этим ключом. Допустим, в процессе игры цвет пришельца меняется с зеленого на желтый:
alien_0 = {'color': 'green'}
print("The alien is " + alien_0['color'] + ".")
alien_0['color'] = 'yellow'
print("The alien is now " + alien_0['color'] + ".")
Сначала определяется словарь alien_0, который содержит только цвет пришельца; затем значение, связанное с ключом 'color', меняется на 'yellow'. Из выходных данных видно, что цвет пришельца действительно сменился с зеленого на желтый:
The alien is green.
The alien is now yellow.
Рассмотрим более интересный пример: отслеживание позиции пришельца, который может двигаться с разной скоростью. Мы сохраним значение, представляющее текущую скорость пришельца, и используем его для определения величины горизонтального смещения:
alien_0 = {'x_position': 0, 'y_position': 25, 'speed': 'medium'}
print("Original x-position: " + str(alien_0['x_position']))
# Пришелец перемещается вправо.
# Вычисляем величину смещения на основании текущей скорости.
(1) if alien_0['speed'] == 'slow':
. .x_increment = 1
elif alien_0['speed'] == 'medium':
. .x_increment = 2
else:
. .# Пришелец двигается быстро.
. .x_increment = 3
# Новая позиция равна сумме старой позиции и приращения.
(2)alien_0['x_position'] = alien_0['x_position'] + x_increment