• Словарь Python представляет собой набор составных, упорядоченных*, изменяемых типов данных языка программирования Python.
Ключевые моменты:
•Композитный: элементы представлены в формате пары "ключ-значение". Ключ должен быть одноэлементным и уникальным. Значение может быть любого типа, такого как строка, целое число, список, словарь, набор и т. д.
•Упорядоченный: до Python 3.7 он был неупорядоченным. Но начиная с версии Python 3.7 словари упорядочены.
•Изменяемый: «значение» пары «ключ-значение» (элемент) может быть обновлено/изменено. Хотя «ключ» не может быть изменен.
•Уникальный: ключ словаря должен быть уникальным.
- Пример:
my_first_dict = {‘python’:1 , ‘c’:2, ‘java’: 3}
Создание словаря
Мы можем создать словарь, поместив пару ключ-значение в фигурные скобки {}, разделенные запятыми. Пример: my_dict = {‘math’:90,’science’:95}
Мы также можем использовать конструктор функции dict()
для создания словаря Python. Пример: my_dict = dict((‘math’:90,’ 95)
Создание словаря с помощью {}
# Null dictionary using curly braces dict_1 = {} print("Empty dictionary using brace: ",dict_1) # Define dictionary using curly braces dict_2 = {'math':90, 'science':85, 'history':72} print("Dictionary using brace: ",dict_2)
Вывод:
Empty dictionary using brace: {} Dictionary using brace: {'math': 90, 'science': 85, 'history': 72}
Создание словаря с помощью конструктора dict()
# Define dictionary using dict() constructor # Null dictionary using dict() function dict_3 = dict() print("Empty dictionary using dict(): ",dict_3) # Define dictionary using dict() dict_4 = {'AI':['nlp','ml'],'CS':['os','dbms']} print("Dictionary using dict(): ",dict_4)
Вывод:
Empty dictionary using dict(): {} Dictionary using dict(): {'AI': ['nlp', 'ml'], 'CS': ['os', 'dbms']}
Доступ к элементам в словаре
Мы можем получить доступ к элементу словаря по «ключу» словаря, используя метод get()
или внутри [] (квадратная скобка), поскольку «ключ» уникален.
• Если элемент не найден в словаре, метод get()
возвращает None.
- Если элемент не найден, то возникает KeyError ’, если мы используем [] (квадратная скобка).
Доступ к элементу словаря
# Accessing dictionary item using get() and [] subject_dict = {'math':90, 'science':85, 'history':72} print(subject_dict['math']) print(subject_dict.get('science'))
Вывод:
90 85
Если элемент не найден в словаре с помощью [], то выдается KeyError.
# Accessing dictionary item using [] subject_dict = {'math':90, 'science':85, 'history':72} print(subject_dict['english'])
Вывод:
Traceback (most recent call last): File "DICTIONARY.py", line 10, in <module> print(subject_dict['english']) KeyError: 'english'
Если элемент не найден в словаре с помощью get(), он возвращает None.
subject_dict = {'math':90, 'science':85, 'history':72} print(subject_dict.get('english'))
Вывод:
None
Добавление и изменение элемента в словаре
Мы можем легко добавлять элементы или обновлять элементы, присваивая значение ключу.
• Если ключа нет в словаре, то ключ добавляется как новый элемент.
- Если ключ уже присутствует в словаре, он обновляется до текущего значения.
Добавить элемент
# Add item subject_dict = {'math':90, 'science':85, 'history':72} subject_dict["english"]=87 print(subject_dict)
Вывод:
{'math': 90, 'science': 85, 'history': 72, 'english': 87}
Обновить элемент
# Update item subject_dict = {'math':90, 'science':85, 'history':72,"english":87} print("Before update: ",subject_dict) subject_dict["english"]=93 print("After update: ",subject_dict)
Вывод:
Before update: {'math': 90, 'science': 85, 'history': 72, 'english': 87} After update: {'math': 90, 'science': 85, 'history': 72, 'english': 93}
Удалить элементы и удалить словарь
Удалить отдельный элемент
•pop(): этот метод может удалить элемент с предоставленным ключом и вернуть значение.
•popitem(): этот метод удаляет произвольный элемент (пару ключ-значение) и возвращает его.
Удаление всех элементов
•clear(): используется для удаления всех элементов из словаря.
Удалить сам словарь
•del(): метод del() используется для удаления самого словаря из памяти.
Код для удаления элементов и удаления словаря
subject_dict = {'math':90, 'science':85, 'history':72} # Remove item using pop print("output1: ",subject_dict.pop("history")) # Remove item using popitem() print("output2: ",subject_dict.popitem()) # Remove all the items print("output3: ",subject_dict.clear()) #delete the dictionary del subject_dict print("\noutput4: ",subject_dict)
Вывод:
output1: 72 output2: ('science', 85) output3: None Traceback (most recent call last): File "DICTIONARY.py", line 22, in <module> print("output4: ",subject_dict) NameError: name 'subject_dict' is not defined
Как словарь работает внутри
Словарь Python использует внутреннюю хеш-таблицу.
• Изначально словарь создается с 8 сегментами. Если 2/3 сегментов заполнены, то выделяются новые сегменты, удваивая количество текущих сегментов.
• Каждое ведро состоит из хэш-кода и пары ключ-значение.
• Хэш-функция использует открытое зондирование для разрешения коллизий.
- Поскольку используется хеш-таблица, словарь Python действует как индекс. Таким образом, доступ к элементу занимает O (1), т.е. постоянное время.
Некоторые полезные словарные методы
values(): возвращает все значения словаря. Синтаксис:dict_name.values()
Keys(): возвращает все ключи словаря. Синтаксис:dict_name.keys
fromkeys(): создайте словарь, указав список ключей и инициализировав его одним значением. Синтаксис:dict_name.fromkeys keys,value
Заключение
Словарь — один из самых удобных инструментов (структур данных) в языке программирования Python. Его временная сложность составляет O (1), поскольку он использует хеш-карту. Так что вполне эффективно. Когда необходимо сохранить значения, соответствующие какому-либо объекту, можно использовать Словарь.
И вот оно. Спасибо за прочтение.
Больше контента на plainenglish.io