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 большее значение.
Когда информация, хранящаяся в словаре, перестает быть ненужной, пару «ключ—значение» можно полностью удалить при помощи команды del. При вызове достаточно передать имя словаря и удаляемый ключ.
Например, в следующем примере из словаря alien_0 удаляется ключ 'points' вместе со значением:
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
(1) del alien_0['points']
print(alien_0)
Строка (1) приказывает Python удалить ключ 'points' из словаря alien_0, а также удалить значение, связанное с этим ключом. Из вывода видно, что ключ 'points' и его значение 5 исчезли из словаря, но остальные данные остались без изменений:
{'color': 'green', 'points': 5}
{'color': 'green'}
примечание
Учтите, что удаление пары «ключ—значение» отменить уже не удастся.
В предыдущем примере в словаре сохранялась разнообразная информация об одном объекте (пришельце из компьютерной игры). Словарь также может использоваться для хранения одного вида информации о многих объектах. Допустим, вы хотите провести опрос среди коллег и узнать их любимый язык программирования. Результаты простого опроса удобно сохранить в словаре:
favorite_languages = {
. .'jen': 'python',
. .'sarah': 'c',
. .'edward': 'ruby',
. .'phil': 'python',
. .}
Пары в словаре в этой записи разбиты по строкам. Ключами являются имена участников опроса, а значениями — выбранные ими языки. Если вы знаете, что для определения словаря потребуется более одной строки, нажмите клавишу Enter после ввода открывающей фигурной скобки. Снабдите следующую строку отступом на один уровень (четыре пробела) и запишите первую пару «ключ—значение», поставив за ней запятую. После этого при нажатии Enter ваш текстовый редактор будет автоматически снабжать все последующие пары таким же отступом, как у первой.
Завершив определение словаря, добавьте закрывающую фигурную скобку в новой строке после последней пары «ключ—значение» и снабдите ее отступом на один уровень, чтобы она была выровнена по ключам. За последней парой также рекомендуется включить запятую, чтобы при необходимости все было готово к добавлению новой пары «ключ—значение» в следующей строке.
примечание
В большинстве редакторов предусмотрены функции, упрощающие форматирование расширенных списков и словарей в описанном стиле. Также существуют другие распространенные способы форматирования длинных словарей — вы можете столкнуться с ними в вашем редакторе или в другом источнике.
Для заданного имени участника опроса этот словарь позволяет легко определить его любимый язык:
favorite_languages.py
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
(1) print("Sarah's favorite language is " +
(2) . .favorite_languages['sarah'].title() +
(3) . .".")
Чтобы узнать, какой язык выбран пользователем с именем Sarah, мы запрашиваем следующее значение:
favorite_languages['sarah']
Этот синтаксис используется в команде вывода (1) , а результат содержит значение, связанное с ключом:
Sarah's favorite language is C.
Этот пример также показывает, как разбить длинную команду print на несколько строк. Слово print короче большинства имен словарей, поэтому есть смысл включить первую часть выводимого текста сразу же за открывающей круглой скобкой (1) . Выберите точку, в которой будет разбиваться вывод, и добавьте оператор конкатенации (+) в конец первой строки (2). Нажмите Enter, а затем клавишу Tab для выравнивания всех последующих строк на один уровень отступа под командой print. Завершив построение вывода, поставьте закрывающую круглую скобку в последней строке блока print (3).
Упражнения