Изменение значений в словаре

We use cookies. Read the Privacy and Cookie Policy

Чтобы изменить значение в словаре, укажите имя словаря с ключом в квадратных скобках, а затем новое значение, которое должно быть связано с этим ключом. Допустим, в процессе игры цвет пришельца меняется с зеленого на желтый:

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

print("New x-position: " + str(alien_0['x_position']))

Сначала определяется словарь с исходной позицией (координаты x и y) и скоростью 'medium'. Значения цвета и количества очков для простоты опущены, но с ними этот пример работал бы точно так же. Также выводится исходное значение x_position.

В точке (2) цепочка if-elif-else определяет, на какое расстояние пришелец должен переместиться вправо; полученное значение сохраняется в переменной x_increment. Если пришелец двигается медленно ('slow'), то он перемещается на одну единицу вправо; при средней скорости ('medium') он перемещается на две единицы вправо; наконец, при высокой скорости ('fast') он перемещается на три единицы вправо. Вычисленное смещение прибавляется к значению x_position в (2), а результат сохраняется в словаре с ключом x_position.

Для пришельца со средней скоростью позиция смещается на две единицы:

Original x-position: 0

New x-position: 2

Получается, что изменение одного значения в словаре изменяет все поведение пришельца. Например, чтобы превратить пришельца со средней скоростью в быстрого, добавьте следующую строку:

alien_0['speed'] = fast

При следующем выполнении кода блок if-elif-else присвоит x_increment большее значение.