Топ-10 методов словарей в Python

Словарь в Python используется для хранения наборов данных в виде пар ключ-значение. Он работает как ассоциативный массив, который встречается в других языках программирования. Для определения словаря используются фигурные скобки {}, а пара «ключ-значение» определяется при помощи двоеточия :. Содержимое ключа и значения может быть как числовым, так и строковым.

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

Метод items()

Метод items() используется для возврата списка кортежей с парами всех ключей и значений словаря.

Синтаксис:dictionary.items()

Данный метод не принимает никаких аргументов.

Приведем пример использования данной функции.

Объявлен ​​словарь с именем products. Ключи содержат названия продуктов, а значения — их цены. Используем для нашего словаря метод items() и сохраним в другой переменной с именем itemlist, а затем выведем на экран.

products = { 'Fresh Oil': 500, 'Mango Juice': 30, '5 star Chocalate': 20, 'Dan Fruit Cake':50 }
itemlist = products.items()
print('The output of items() method:\n', itemlist)

Выполнив данную программу, получим следующий результат:

 The output of items() method:
  dict_items([('Fresh Oil', 500), ('Mango Juice', 30), ('5 star Chocalate', 20), ('Dan Fruit Cake', 50)])

Метод keys()

keys() используется для возврата списка со всеми ключами словаря.

Синтаксис: dictionary.keys()

Этот метод также не принимает никаких аргументов.

Давайте рассмотрим метод keys() на примере. В скрипте объявлен ​​словарь с именем products. Как и в предыдущем примере, ключи содержат названия продуктов, а значения — их цену. Применим метод keys(), а возвращаемые значения сохраним в переменной с именем keylist, которую затем выведем на экран.

Если вам нужен список всех значений словаря, следует использовать метод values(), который работает аналогичным образом.

products = { 'Fresh Oil': 500, 'Mango Juice': 30, '5 star Chocalate': 20, 'Dan Fruit Cake':50 }
keylist = products.keys()
print('The output of keys() method:\n', keylist)
 The output of keys() method:
  dict_keys(['Fresh Oil', 'Mango Juice', '5 star Chocalate', 'Dan Fruit Cake'])

Метод setdefault()

setdefault() используется для получения значения любого конкретного ключа из словаря, если такой ключ существует. Этот метод можно использовать для установки значения по умолчанию, если указанного ключа в словаре нет.

Синтаксис: dictionary.setdefault(key_value [, default_value])

У этого метода два аргумента. Первый является обязательным и используется для указания ключа, по которому будет выполняться поиск в словаре. Второй аргумент опционален. Он используется для установки значения по умолчанию, если ключа, указанного в первом аргументе, не окажется в словаре. Если указанного ключа в словаре нет, а значение по умолчанию не определено, метод вернет «None».

Следующий пример показывает использование метода setdefault() в словаре. Возьмем все тот же словарь products . Для начала используем метод setdefault() с одним аргументом. Сохраним его в переменную с именем juice_price и выведем эту переменную на экран.

products = { 'Fresh Oil': 500, 'Mango Juice': 30, '5 star Chocolate': 20, 'Dan Fruit Cake':50 }
juice_price = products.setdefault('Mango Juice')
print('Juice price is TK.',juice_price)

Результат:

 Juice price is TK. 30

Ключ Mango Juice существует в словаре. Значение этого ключа 30, оно и выводится на экран.

А теперь давайте используем этот метод с двумя аргументами, сохраним в переменную с именем cake_price и выведем ее.

cake_price = products.setdefault('Cake',35)
print('Cake price is TK.',cake_price)

Выполним данный код и получим следующее:

 Cake price is TK. 35

Ключа Cake в словаре нет. Поэтому печатается значение по умолчанию для метода setdefault(), в нашем случае это 35.

Метод get()

Метод get() работает аналогично методу setdefault(), но между ними есть одно различие. Для метода get() оба аргумента являются обязательными, в то время как в методе setdefault() второй аргумент опционален.

Синтаксис: dictionary.get(key_value , default_value)

Данный метод возвращает значение, соответствующее указанному ключу (ключ задается в первом аргументе). Если же такого ключа в словаре не окажется, метод вернет значение по умолчанию, которое мы задаем во втором аргументе.

В следующем примере используется тот же словарь, что и во всех предыдущих. Здесь метод get() используется дважды, с двумя разными значениями ключа.

Первый вариант:

products = { 'Fresh Oil': 500, 'Mango Juice': 30, '5 star Chocolate': 20, 'Dan Fruit Cake':50 }
choc_price = products.get('Chocolate',15)
print('Chocolate price is TK.',choc_price)

Результат:

 Chocolate price is TK. 15

Первый ключ, переданный в метод get(), — Chocolate. Его нет в словаре, поэтому выводится значение по умолчанию.

Второй вариант:

juice_price = products.get('Mango Juice',15)
print('Juice price is TK.',juice_price)

Результат:

 Juice price is TK. 30

Второй ключ, который мы передали в метод get(), — это Mango Juice. Такой ключ в словаре есть, поэтому на экран выводится его значение.

Метод len()

Метод len() используется для подсчета общего количества элементов в словаре (под элементом понимается пара ключ-значение).

Синтаксис: len(словарь)

Этот метод принимает словарь в качестве аргумента и возвращает общее количество элементов этого словаря.

Давайте рассмотрим данный метод на примере. Следующий скрипт подсчитывает общее количество элементов словаря products и выводит на экран это значение.

products = { 'Fresh Oil': 500, 'Mango Juice': 30, '5 star Chocolate': 20, 'Dan Fruit Cake':50 }
print("Total items of the dictionary are:", len(products))

Выполнив данный код, получим, что наш словарь состоит из 4 элементов:

 Total items of the dictionary are: 4

Метод pop()

Метод pop() используется для получения конкретного значения по ключу и удаления этого элемента из словаря на основе значения ключа.

Синтаксис: dictionary.pop(key [, value])

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

Для лучшего понимания рассмотрим пример. Объявим словарь с именем dictvar, содержащий четыре элемента.

Сначала используем в качестве ключа Phone, а дополнительное значение указывать не будем.

# Определяем словарь
dictvar = { 'Name': 'Sakib Al Hasan', 'Profession': 'Cricketer','Phone':'01866564234', 'Salary':300000 } 
# Выводим содержимое словаря
print("\nThe content of the dictionary:\n",dictvar)
# Читаем и удаляем значение по ключу, если ключ существует
print("\nThe phone no is:", dictvar.pop('Phone'))
# Выводим содержимое словаря после применения метода pop
print("\nThe content of the dictionary after pop:\n",dictvar)

Результат:

  The content of the dictionary:
   {'Name': 'Sakib Al Hasan', 'Profession': 'Cricketer', 'Phone': '01866564234', 'Salary': 300000}

 The phone no is: 01866564234

 The content of the dictionary after pop:
   {'Name': 'Sakib Al Hasan', 'Profession': 'Cricketer', 'Salary': 300000}

Ключ Phone в словаре есть. Поэтому при использовании метода pop() возвращается его значение, после чего этот элемент удаляется из словаря.

А теперь давайте применим метод pop() с тем же первым аргументом (Phone), но к нему добавим и второй, необязательный аргумент.

# Читаем значение ключа, которого нет в словаре
print("\nThe phone no is:", dictvar.pop('Phone','01766345234'))

Результат:

 The phone no is: 01766345234

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

Метод update()

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

Синтаксис: dictionary1.update(dictionary2)

В качестве аргумента метод принимает dictionary2, который будет использоваться для обновления dictionary1.

Рассмотрим пример. В следующем скрипте объявлены два словаря: dict1 и dict2. dict2 используется для обновления dict1 с помощью метода update(). dict1 печатается до и после использования метода update().

dict1 = {'01117856': 2.97, '01113456': 3.69, '01118734': 3.89}
dict2 = {'01113456': 3.33, '011113423': 3.98}
print("The content of the first dictionary before update:\n", dict1)
dict1.update(dict2)
print("The content of the first dictionary after update:\n", dict1)

Запустим наш код. Вывод:

 The content of the first dictionary before update:
   {'01117856': 2.97, '01113456': 3.69, '01118734': 3.89}

 The content of the first dictionary after update:
   {'01117856': 2.97, '01113456': 3.33, '01118734': 3.89, '011113423': 3.98}

У словарей dict1 и dict2 есть один общий ключ, это 01113456. Поэтому значение этого ключа в dict1 обновляется значением из dict2. Второй ключ dict2 не существует в dict1, поэтому этот элемент добавляется в конец dict1.

Метод copy()

copy() используется для создания копии словаря. Это полезно, когда нам нужно сохранить исходную копию словаря перед изменением.

Синтаксис: dictionary1.copy()

Этот метод не принимает никаких аргументов.

Рассмотрим пример. В следующем скрипте dict1 копируется в dict2. Обе переменные используют разную память. Таким образом, если вы измените какое-либо значение одного словаря, это не повлияет на другую копию словаря. Изменим одно из значений dict2 и выведем оба словаря.

dict1 = {'01117856': 2.97, '01113456': 3.69, '01118734': 3.89}
dict2 = dict1.copy()
dict2['01118734'] = 3.99
print("The content of the original dictionary:\n", dict1)
print("The content of the copied dictionary:\n", dict2)

Запустим наш код. Можно заметить, что изменения в dict2 не вызывают никаких изменений в dict1.

 The content of the original dictionary:
   {'01117856': 2.97, '01113456': 3.69, '01118734': 3.89}

 The content of the copied dictionary:
   {'01117856': 2.97, '01113456': 3.69, '01118734': 3.99}

Метод sorted()

sorted() используется в словаре только для сортировки ключей.

Синтаксис: sorted(dictionary)

Метод принимает любой словарь в качестве аргумента и возвращает отсортированные ключи этого словаря.

Рассмотрим на примере. Объявим словарь с именем dictvar. Затем используем метод sorted() для сортировки его ключей и сохраним в переменной с именем sorted_key. Выведем значения этой переменной на экран.

dictvar = {567: 3.97, 345: 2.69, 745: 3.89}
sorted_key = sorted(dictvar)
print("The content of the sorted key:\n", sorted_key)

В результате запуска этого кода получим список отсортированных по возрастанию ключей.

 [345, 567, 745]

Метод clear()

И финальный метод из нашей подборки топ-10 методов словарей в Python. Данный метод используется, чтобы убрать все элементы из словаря, очистить его.

Синтаксис: dictionary.clear()

clear() не принимает никакие аргументы и возвращает пустой словарь.

Как и в предыдущем примере, объявим словарь с именем dictvar. Затем применим к нему метод clear(). Для наглядности выведем на экран содержимое словаря до и после применения метода clear().

dictvar = {1001: 3.97, 1002: 2.69, 1003: 3.89}
print("The content of the dictionary:\n", dictvar)
dictvar.clear()
print("The content of the dictionary:\n", dictvar)

Результат:

 The content of the dictionary:
   {1001: 3.97, 1002: 2.69, 1003: 3.89}

 The content of the dictionary:
   {}

Мы получили пустой словарь.

Заключение

В этой статье мы рассказали про топ-10 методов словарей в Python и показали их работу на простых примерах. Надеемся, это поможет вам более эффективно работать со словарями.