Операции со словарями в Python

From Викижурнал
Jump to: navigation, search
Операции со словарями в Python
Операции со словарями в Python
Портал ПрограммистовПортал 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.

В этом примере также показано, как можно разбить длинное предложение при выводи данных. Выберите подходящее место, чтобы разбить то, что выводится, и добавьте оператор конкатенации (+) в конце строки. Нажмите клавишу ввода, а затем нажмите клавишу табуляции, чтобы выровнять все последующие строки на одном уровне отступа. Когда вы закончите составлять вывод, вы можете поместить закрывающую скобку в последнюю строку блока вывода.

Заключение

Основная статья: Циклы со словарями в Python
Основная статья: Дополнительные операции со словарями в Python

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

Другие статьи о Python