dictionaries
Словарь в Python используется для хранения наборов данных в виде пар ключ-значение. Он работает как ассоциативный массив, который встречается в других языках программирования. Для определения словаря используются фигурные скобки {}, а пара «ключ-значение» определяется при помощи двоеточия :. Содержимое ключа и значения может быть как числовым, так и строковым.
Для работы со словарями Python имеет множество встроенных методов. С их помощью решаются задачи добавления и удаления элементов, обновления, поиска, подсчета и т.д. В этой статье мы расскажем про десять самых важных, на наш взгляд, методов словарей в Python.
Метод 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() используется для возврата списка со всеми ключами словаря.
Синтаксис: 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() используется для получения значения любого конкретного ключа из словаря, если такой ключ существует. Этот метод можно использовать для установки значения по умолчанию, если указанного ключа в словаре нет.
Синтаксис: 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() работает аналогично методу 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(словарь)
Этот метод принимает словарь в качестве аргумента и возвращает общее количество элементов этого словаря.
Давайте рассмотрим данный метод на примере. Следующий скрипт подсчитывает общее количество элементов словаря 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() используется для получения конкретного значения по ключу и удаления этого элемента из словаря на основе значения ключа.
Синтаксис: 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() используется для двух словарей. Если какой-либо ключ второго словаря совпадает с любым ключом первого словаря, то значение ключа из первого словаря будет обновлено значением этого же ключа из второго словаря. Ключи второго словаря, не совпадающие ни с одним ключом из первого словаря, добавляются в конец первого словаря вместе со своими значениями.
Синтаксис: 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() используется для создания копии словаря. Это полезно, когда нам нужно сохранить исходную копию словаря перед изменением.
Синтаксис: 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(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]
И финальный метод из нашей подборки топ-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 и показали их работу на простых примерах. Надеемся, это поможет вам более эффективно работать со словарями.
Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…
Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…
Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…
В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…
Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…
Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…