Словарь в 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 и показали их работу на простых примерах. Надеемся, это поможет вам более эффективно работать со словарями.