В этой статье разберем все о логике работы словарей в Python. Мы научимся создавать их, получать доступ к элементам словаря, добавлять, удалять элементы. При работе со словарями мы так же разберем и встроенные методы. В Python работа со словарями, особо не отличается от работы со списками, кортежами, и.т.д.
Словарь в Python — это неупорядоченная последовательность элементов. Каждый элемент словаря имеет пару ключ:значение. Словари для извлечение значений, по его ключу.
Как создать словарь ?
Создание словаря, ничем особо сложным не отличается, мы заключаем словарь в фигурные { } скобки, а элементы идут через запятую. Каждый элемент словаря содержит (ключ:значение).
dict = {} dict = {1:'яблоко',2:'Груша'} dics = {'name':'Тимур',1:[2,3,4,5]} dict = dict({1:'Яблоко', 2:'Груша'})
Выше рассмотрены варианты создания словаря в Python. Как вы могли заметить словари можно создать заключая пары в фигурные скобки, так и используя функцию dict().
Внутри словаря, можно хранить в качестве значений любой тип данных. Но, ключи значений обязательно должны иметь неизменяемый тип данных, и так они должны быть уникальными.
Доступ к элементам Словаря
Для доступа к элементам словаря, можно воспользоваться квадратными скобками [], либо использовать метод get(). В случае если мы воспользуемся квадратными скобками, то если ключ не найден, то мы получим ошибку KeyError. Если мы воспользуемся get(), и при условии что ключ не будет найден, функция вернет нам None.
dict ={'name':'Тимур', 'age':30} print(dict['name']) print(dict.get('age')) print(dict.get('adress')) print(dict['adress']) Результат: Тимур 30 None KeyError: 'adress'
Изменение и добавление элементов в словарь
С помощью оператора присваивания, мы можем добавлять новые элементы, а так же менять значение существующих. Если ключ существует, то обновляется его значение, если он отсутствует, то в словарь добавляется пара (ключ:значение).
dict ={'name':'Тимур', 'age': 30} dict['age'] = 31 print(dict) dict['adress'] = 'Москва' print(dict) Результат: {'name':'Тимур', 'age':31} {'name':'Тимур', 'age':31, 'adress':'Москва'}
Удаление элементов из словаря
С помощью метода pop(), мы можем удалить конкретный ключ, и он нам вернет значение этого ключа. Метод popitem() удалит случайную пару ключ:значение, и так же вернет случайную пару ключ:значение. Весь словарь можно очистить с помощью метода clear(). Для удаление отдельных элементов, можно воспользоваться ключевым словом del.
diction ={1:1,2:4, 3:9, 4:16, 5:25} print(diction.pop(4)) print(diction) print(diction.popitem()) print(diction) diction.clear print(diction) Результат: 16 {1: 1, 2: 4, 3: 9, 5: 25} (1, 1) {2: 4, 3: 9, 5: 25} {}
Методы словаря
Метод | Описание |
clear() | Удаляет все элементы из словаря. |
copy() | Возвращает копию словаря. |
fromkeys(seq[, v]) | Возвращает новый словарь с ключами из seq и значение, равное v (по умолчанию используется значение None). |
get(key[,d]) | Возвращает значение key. Если key не существует, возвращается d (по умолчанию используется значение None). |
items() | Возвращает новый объект элементов словаря в формате (ключ, значение). |
keys() | Возвращает новый объект ключей словаря. |
pop(key[,d]) | Удаляет элемент с помощью key и возвращает его значение или d если key не найден. Если d не предусмотрено и key не найден, его поднимает KeyError. |
popitem() | Удаляет и возвращает произвольный элемент (ключ, значение). Повышения KeyError если словарь пуст. |
setdefault(key[,d]) | Возвращает соответствующее значение, если key есть в словаре. Если нет, то вставляет key со значением d и возвращается d (по умолчанию используется значение None). |
update([other]) | Обновляет словарь парами ключ/значение из other, перезапись существующих ключей. |
values() | Возвращает новый объект значений |
Примеры работы этих методов
marks = {}.fromkeys(['Math','English', 'Scinece'], 0) print(marks) for item in marks.items(): print(item) print(list(sorted(marks.keys()))) Результат: {'Math': 0, 'English': 0, 'Science': 0} ('Math', 0) ('English', 0) ('Science', 0) ['English', 'Math', 'Science']
Генерирование словаря
Если помните, мы с вами уже рассматривали генерацию списков, кортежей и.т.д. В принципе логика генерации словарей, не сильно отличается. Рассмотрим пример создание генерированного словаря, где элемент будет равен квадрату своего ключа.
dictionary = {x: x * x for x in range(6)} print(dictionary) Результат: {0:0,1:1,2:4,3:9,4:16,5:25}
Вышеописанный код эквивалентен
dictionary ={} for x in range(6): dictionary[x] = x * x print(dictionary) Результат: {0:0,1:1,2:4,3:9,4:16,5:25}
Так же при генерации словаря, мы можем воспользоваться оператором условий if. Рассмотрим пример создания словаря с нечетными элементами.
dictionary = {x: x * x for x in range(11) if x % 2 == 1} print(dictionary) Результат: {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
Проверка на наличие элемента
Проверяем наличие элемента, с помощью ключевого слова in.
dictionary = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81} print(1 in dictionary) print(2 not in dictionary) print(49 in dictionary) Результат: True True False
Итерация по словарю
dictionary = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81} for i in dictionary: print(dictionary(i)) Результат: 1 9 25 49 81
Встроенные функции словаря
Функции | Описание |
all() | ВозвращаетTrue, если все ключи словаря Истинны (или если словарь пуст). |
any() | ReturnTrue, если какой - либо ключ словаря истинен. Если словарь пуст, вернитесь False. |
len() | Возвращает длину (количество элементов) в словаре. |
sorted() | Возвращает новый отсортированный список ключей в словаре. |