Одним из наиболее важных составных типов данных в Python является словарь. Это коллекция, в которой данные хранятся в виде пар ключ-значение {key:value}
. Сегодня мы поговорим именно про словари в Python. Обсудим, что они из себя представляют и как над ними выполнять операции CRUD (Create, Read, Update, Delete – Создание, Чтение, Модификация, Удаление).
Примечание. Словари упорядочены и изменяемы, а данные в них не могут дублироваться. При этом стоит иметь в виду, что до Python 3.6 словари были не упорядочены.
В этой статье:
- Как создать словарь в Python
- Как получить доступ к значениям словаря
- Обновление словаря
- Удаление элементов из словаря
- Словарные операторы и встроенные функции
- Как перебирать словарь
Отлично! Теперь давайте познакомимся со словарями поближе!
Как создать словарь в Python
Как мы знаем, словарь состоит из набора пар {ключ:значение}
. Двоеточие (:
) отделяет каждый ключ от связанного с ним значения.
Мы можем определить словарь, заключив разделенный запятыми список пар ключ-значение в фигурные скобки {}
.
my_dict = { "Name": "Ashutosh Krishna", "Roll": 23, "Subjects": ["OS", "CN", "DBMS"] }
В приведенном выше примере Name
, Roll
и Subjects
являются ключами словаря my_dict
. Ashutosh Krishna
, 23
и ["OS", "CN", "DBMS"]
являются их соответствующими значениями.
Мы также можем объявить словарь с помощью встроенной функции dict()
. К примеру, это можно сделать следующим образом:
my_dict = dict({ "Name": "Ashutosh Krishna", "Roll": 23, "Subjects": ["OS", "CN", "DBMS"] })
Для такого задания словаря хорошо подойдет список кортежей:
my_dict = dict([ ("Name", "Ashutosh Krishna"), ("Roll", 23), ("Subjects", ["OS", "CN", "DBMS"]) ])
Кроме того, словарь можно создать с помощью указания необходимых значений в качестве аргументов ключевых слов. Например так:
my_dict = dict( Name="Ashutosh Krishna", Roll=23, Subjects=["OS", "CN", "DBMS"] )[python_ad_block]
Как получить доступ к значениям словаря в Python
Вы не можете получить доступ к значениям словаря, используя индекс.
my_dict = { "Name": "Ashutosh Krishna", "Roll": 23, "Subjects": ["OS", "CN", "DBMS"] } print(my_dict[1])
Если вы попытаетесь сделать это, ваш код выдаст ошибку KeyError
:
# Traceback (most recent call last): # File "C:\Users\ashut\Desktop\Test\hello\test.py", line 7, in <module> # print(my_dict[1]) # KeyError: 1
Обратите внимание, что исключение называется KeyError
. Означает ли это, что к значениям словаря можно получить доступ с помощью ключей? Да, вы всё правильно поняли!
Вы можете получить значение из словаря, указав соответствующий ключ в квадратных скобках []
.
>>> my_dict['Name'] 'Ashutosh Krishna' >>> my_dict['Subjects'] ['OS', 'CN', 'DBMS']
Если ключ не существует в словаре, мы получаем все то же исключение KeyError
:
>>> my_dict['College'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'College'
Но мы также можем избежать этой ошибки, используя функцию get()
. Это будет выглядеть следующим образом:
>>> my_dict.get('College') >>>
Если ключ существует в словаре, мы получим соответствующее значение. А если такого ключа нет, то код не выдаст нам ошибку.
Как обновить словарь в Python
Словари изменяемы. Это означает, что они могут быть изменены после создания. Мы можем добавить новую пару ключ-значение или изменить уже существующие пары.
Добавить новый элемент в словарь довольно просто с помощью оператора присваивания. К примеру, это можно сделать так:
>>> my_dict['College'] = 'NSEC' >>> my_dict {'Name': 'Ashutosh Krishna', 'Roll': 23, 'Subjects': ['OS', 'CN', 'DBMS'], 'College': 'NSEC'}
Если ключ уже присутствует в словаре, программа обновит его значение.
>>> my_dict['Roll'] = 35 >>> my_dict {'Name': 'Ashutosh Krishna', 'Roll': 35, 'Subjects': ['OS', 'CN', 'DBMS'], 'College': 'NSEC'}
Как обновить словарь с помощью метода update()
Мы также можем обновить словарь с помощью встроенного метода update()
:
>>> my_dict {'Name': 'Ashutosh Krishna', 'Roll': 35, 'Subjects': ['OS', 'CN', 'DBMS'], 'College': 'NSEC'} >>> another_dict = {'Branch': 'IT'} >>> my_dict.update(another_dict) >>> my_dict {'Name': 'Ashutosh Krishna', 'Roll': 35, 'Subjects': ['OS', 'CN', 'DBMS'], 'College': 'NSEC', 'Branch': 'IT'} >>>
Метод update()
принимает либо словарь, либо итерируемый объект, состоящий из пар ключ-значение (обычно это кортежи). Кроме того, можно прописать значение для ключевого слова, как в следующем примере:
>>> my_dict.update(Branch='CSE') >>> my_dict {'Name': 'Ashutosh Krishna', 'Roll': 35, 'Subjects': ['OS', 'CN', 'DBMS'], 'College': 'NSEC', 'Branch': 'CSE'}
От редакции Pythonist. Также рекомендуем статью «Как объединить словари в Python».
Как удалить элементы из словаря в Python
Есть несколько способов удалить элементы из словаря в Python.
Как удалить элемент словаря с помощью метода pop()
Мы можем удалить конкретный элемент словаря с помощью метода pop()
. Этот метод удаляет элемент с указанным ключом и возвращает удаленное значение. Например, это можно сделать следующим образом:
>>> roll = my_dict.pop('Roll') >>> roll 35 >>> my_dict {'Name': 'Ashutosh Krishna', 'Subjects': ['OS', 'CN', 'DBMS'], 'College': 'NSEC', 'Branch': 'CSE'}
Как удалить элемент словаря с помощью метода popitem()
popitem()
удаляет последнюю пару ключ-значение и возвращает ее в виде кортежа. Это выглядит так:
>>> my_dict.popitem() ('Branch', 'CSE') >>> my_dict {'Name': 'Ashutosh Krishna', 'Subjects': ['OS', 'CN', 'DBMS'], 'College': 'NSEC'}
Как удалить элемент словаря с помощью ключевого слова del
Вы можете использовать ключевое слово del
для удаления определенной пары ключ-значение {key:value}
или даже всего словаря. Ключевое слово del
работает следующим образом:
>>> del my_dict['Subjects'] >>> my_dict {'Name': 'Ashutosh Krishna', 'College': 'NSEC'} >>> del my_dict >>> my_dict Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'my_dict' is not defined
Как удалить элемент словаря с помощью метода clear()
Метод clear()
очищает все пары ключ-значение {key:value}
в словаре. Это делается вот так:
>>> my_dict {'Name': 'Ashutosh Krishna', 'Roll': 23, 'Subjects': ['OS', 'CN', 'DBMS']} >>> my_dict.clear() >>> my_dict {}
Обратите внимание, что после вызова метода clear()
вывод словаря с помощью print()
не приводит к ошибке, поскольку метод clear()
не удаляет сам словарь, а лишь очищает его от всех значений. В то время как ключевое слово del
именно удаляет словарь. Вот почему в предыдущем случае мы получили NameError
.
Словарные операторы и встроенные функции
Давайте поговорим о двух важных операторах и встроенных функциях, которые мы можем использовать при работе со словарями.
Функция len()
Функция len()
возвращает количество пар ключ-значение, имеющихся в заданном словаре. К примеру, мы можем использовать функцию len()
следующим образом:
>>> my_dict {'Name': 'Ashutosh Krishna', 'Roll': 23, 'Subjects': ['OS', 'CN', 'DBMS']} >>> len(my_dict) 3
Функция sorted()
Функция sorted()
сортирует элементы заданного итерируемого объекта в определенном порядке (по возрастанию или по убыванию) и возвращает их в виде списка. Принцип работы данной функции показан ниже:
>>> sorted(my_dict) ['Name', 'Roll', 'Subjects']
Оператор in
Вы можете использовать оператор in
, чтобы проверить, присутствует ли ключ в словаре. Это позволит вам избежать ошибок при вызове несуществующих ключей. Пример использования оператора in
:
>>> 'Roll' in my_dict True >>> 'College' in my_dict False
Встроенные словарные методы
Для словарей в Python доступны различные встроенные методы. Ранее мы уже обсуждали некоторые из них, такие как clear()
, pop()
и popitem()
. Давайте рассмотрим еще несколько.
Метод | Описание |
---|---|
clear() | Удаляет все элементы из словаря |
copy() | Возвращает копию словаря |
fromkeys(seq[, v]) | Возвращает новый словарь с ключами из seq и значением, равным v (по умолчанию None) |
get(key[,d]) | Возвращает значение по заданному ключу. Если ключ не существует, возвращает d (по умолчанию None) |
items() | Возвращает новый объект, содержащий элементы словаря в формате (ключ, значение) |
keys() | Возвращает новый объект, содержащий ключи словаря |
pop(key[,d]) | Удаляет элемент по ключу и возвращает его значение или d, если ключ не найден. Если d не указан и ключ не найден, возникает KeyError |
popitem() | Удаляет и возвращает элемент (пару ключ, значение), добавленный в словарь последним. До Python 3.7 удалялся и возвращался произвольный элемент. Вызывает KeyError, если словарь пуст |
setdefault(key[,d]) | Возвращает соответствующее значение, если ключ находится в словаре. Если нет, вставляет ключ со значением d и возвращает d (по умолчанию None) |
update([other]) | Обновляет словарь парами ключ-значение из other, перезаписывая существующие ключи |
values() | Возвращает новый объект, содержащий значения словаря |
Как перебирать словарь
По умолчанию, когда мы используем цикл for
для перебора словаря, мы получаем ключи. Вы можете видеть это в приведенном ниже коде:
my_dict = { "Name": "Ashutosh Krishna", "Roll": 23, "Subjects": ["OS", "CN", "DBMS"] } for item in my_dict: print(item) # Output: # Name # Roll # Subjects
Однако мы также можем перебирать словарь и другими способами.
Как перебирать словарь с помощью метода items()
Когда мы используем метод items()
для перебора словаря, он возвращает нам кортеж из ключа и значения на каждой итерации. Таким образом мы можем напрямую получить ключ и значение. Сделать это можно следующим способом:
my_dict = { "Name": "Ashutosh Krishna", "Roll": 23, "Subjects": ["OS", "CN", "DBMS"] } for key, value in my_dict.items(): print(key, value)
Вот наш результат:
Name Ashutosh Krishna Roll 23 Subjects ['OS', 'CN', 'DBMS']
Важно отметить, что в цикле for
следует указать две переменных через запятую. В данном случае мы использовали key
и values
, однако можно использовать любые имена. К примеру, for i, j
или for first, second
– насколько вам хватит фантазии.
Как перебирать словарь с помощью keys()
В этом случае мы получаем только ключи на каждой итерации. Выглядит это так:
my_dict = { "Name": "Ashutosh Krishna", "Roll": 23, "Subjects": ["OS", "CN", "DBMS"] } for key in my_dict.keys(): print(key)
Запустите данный код, и вы получите следующее:
Name Roll Subjects
Как перебирать словарь с помощью values()
При использовании values()
в цикле for
мы получаем значения словаря. Делается это так:
my_dict = { "Name": "Ashutosh Krishna", "Roll": 23, "Subjects": ["OS", "CN", "DBMS"] } for value in my_dict.values(): print(value)
В таком случае мы получим следующий результат:
Ashutosh Krishna 23 ['OS', 'CN', 'DBMS']
Заключение
Из этой статьи мы узнали, что такое словари в Python и как выполнять над ними операции CRUD. Мы также разобрали несколько методов и функций, применяемых к словарям, и посмотрели это все на примерах.
Успехов в написании кода!
Перевод статьи «Python Dictionary – How to Perform CRUD Operations on dicts in Python».