Глава 6 • Словари
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']))
# Пришелец перемещается вправо.
# Вычисляем величину смещения на основании текущей скорости.
if alien_0['speed'] == 'slow':
x_increment = 1
elif alien_0['speed'] == 'medium':
x_increment = 2
else:
# Пришелец двигается быстро.
x_increment = 3
# Новая позиция равна сумме старой позиции и приращения.
Работа со словарями
105
alien_0['x_position'] = alien_0['x_position'] + x_increment
print("New x-position: " + str(alien_0['x_position']))
Сначала определяется словарь с исходной позицией (координаты
x
и
y
) и ско-
ростью
'medium'
. Значения цвета и количества очков для простоты опущены, но
с ними этот пример работал бы точно так же. Также выводится исходное значение
x_position
.
В точке
цепочка
if
-
elif
-
else
определяет, на какое расстояние пришелец должен
переместиться вправо; полученное значение сохраняется в переменной
x_increment
.
Если пришелец двигается медленно (
'slow'
), то он перемещается на одну единицу
вправо; при средней скорости (
'medium'
) он перемещается на две единицы вправо;
наконец, при высокой скорости (
'fast'
) он перемещается на три единицы вправо.
Вычисленное смещение прибавляется к значению
x_position
в
, а результат со-
храняется в словаре с ключом
x_position
.
Для пришельца со средней скоростью позиция смещается на две единицы:
Original x-position: 0
New x-position: 2
Получается, что изменение одного значения в словаре изменяет все поведение при-
шельца. Например, чтобы превратить пришельца со средней скоростью в быстрого,
добавьте следующую строку:
alien_0['speed'] = fast
При следующем выполнении кода блок
if
-
elif
-
else
присвоит
x_increment
большее
значение.
Удаление пар «ключ—значение»
Когда информация, хранящаяся в словаре, перестает быть ненужной, пару «ключ—
значение» можно полностью удалить при помощи команды
del
. При вызове до-
статочно передать имя словаря и удаляемый ключ.
Например, в следующем примере из словаря
alien_0
удаляется ключ
'points'
вместе со значением:
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
del alien_0['points']
print(alien_0)
Строка
приказывает Python удалить ключ
'points'
из словаря
alien_0
, а также
удалить значение, связанное с этим ключом. Из вывода видно, что ключ
'points'
и его значение 5 исчезли из словаря, но остальные данные остались без измене-
ний:
{'color': 'green', 'points': 5}
{'color': 'green'}
|