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