Словарь — это структура данных, которая позволяет записывать и получать различные значения по ключу. В некоторых языках ключами и значениями словаря могут быть только специфические объекты. А в Python — любые сущности: вплоть до пользовательских классов.
Как работать со словарями в Python
🚀 Создать
Ключевое слово dict
В Python есть множество встроенных функций. В том числе, чтобы получить стандартные структуры данных или преобразовать объекты к этим структурам. Если нужно создать пустой словарь, напишите:
my_new_dict = dict()
Синтаксическая конструкция
Еще, чтобы получить объект словаря, можно использовать синтаксис языка:
another_dict = {"string_key": "the value", 2: "another value"}
Выражение-генератор
Третий способ: применить выражение — генератор словаря. Это помогает составить словарь из пары итерируемых объектов, то есть объектов, которые можно повторять. Например:
list_one = ["one", "two", "three", "four", "five"] list_two = [1, 2, 3, 4, 5] the_dict = {} for k, v in zip(list_one, list_two): the_dict[k] = v + 1 print(the_dict["one"]) 2 print(the_dict["two"]) 3 print(the_dict.keys()) dict_keys(['one', 'two', 'three', 'four', 'five'])
Здесь каждое значение словаря было инкрементировано: то есть мы увеличили значение переменной. Но если вам не нужно преобразовывать значения, используйте более короткую конструкцию:
list_one = ["one", "two", "three", "four", "five"] list_two = [1, 2, 3, 4, 5] the_dict = dict(zip(list_one, list_two))
🚀 Получить значения
Для этого нужно обратиться к объекту словаря и указать нужный ключ:
the_dict = {0: "A", 1: "B", 2: "C", 3: "D", 4: "E"} let_a = the_dict[0] let_b = the_dict[1] print(f"{let_a}{let_b} -- {the_dict[2]}{the_dict[3]}") AB -- CD
🚀 Добавить, изменить и удалить элементы
Нужно обратиться по ключу к объекту словаря, выполнить операцию присваивания:
# добавление элементов the_dict = {} the_dict["my_key"] = "some value" the_dict["my_another_key"] = 42 # изменение элементов the_dict["my_key"] = "yet another value" # удаление элементов del the_dict["my_key"]
🚀 Проверить наличие ключа
Чтобы проверить, есть ли указанный ключ в словаре, используйте ключевое слово in или метод get словаря:
the_dict = {"a": 1, "b": 2} print("c" in the_dict) False print("a" in the_dict) True
Метод get объекта словаря возвращает найденное значение в словаре по ключу. Или значение, указанное как стандартное возвращаемое, — если ключ не найден:
the_dict = {"a": 1, "b": 2} if not the_dict.get("A", None): print("Такой ключ не найден") Такой ключ не найден a = the_dict.get("a", None) print(a) 1
🚀 Скопировать словарь
Чтобы получить неглубокую копию, вызовите метод copy или примените метод модуля copy: copy.copy. Если нужна глубокая, нужен метод copy.deepcopy.
import copy the_dict = {1: "a", 2:"b"} dict_copy = the_dict.copy() dict_copy2 = copy.copy(the_dict) # то же самое, что и в примере выше deep_copy = copy.deepcopy(the_dict) # полная, глубокая копия
🚀 Определить длину словаря
Узнайте, сколько ключей содержит словарь, с помощью встроенной функции len. Она возвращает количество итерируемых объектов.
the_dict = {"a": 1, "b": 2} length = len(the_dict) print(length) 2
Этому учат на курсе Skypro «Python-разработчик». Программа построена так, что вы упражняетесь на реальных задачах, а не просто изучаете отдельные блоки. В результате свои курсовые работы сможете положить в портфолио, чтобы повысить шансы найти хорошую работу еще в процессе обучения.
Итерация словаря
Ключи, значения или всё вместе получают с помощью трех методов словаря. Для ключей — keys, для значений — values, для ключей и значений — items. Вызывать метод keys необязательно, так как при попытке итерации по словарю по умолчанию будут использоваться его ключи. По всем полученным данным можно произвести итерацию — повторить какое-либо действие.
✔️ По ключам
the_dict = {"a": 1, "b": 2} for k in the_dict.keys(): print(k) print(the_dict[k]) a 1 b 2
Keys используется по умолчанию, чтобы получить объект итератора:
the_dict = {"a": 1, "b": 2} for k in the_dict: # вызова keys не происходит print(k) print(the_dict[k]) a 1 b 2
✔️ По значениям
the_dict = {"a": 1, "b": 2} for v in the_dict.values(): print(v) 1 2
✔️ По ключам и значениям
Пример распаковки кортежа вида «ключ, значение», чтобы сохранить их в отдельные переменные:
the_dict = {"a": 1, "b": 2} for k, v in the_dict.items(): print(f"{k} - {v}") a - 1 b - 2
Другие методы
✔️ fromkeys
Этот метод позволяет создавать словари с ключами, полученными из итерируемого объекта. В качестве значения по умолчанию используется второй аргумент функции:
the_list = ["a", "b"] the_dict = dict.fromkeys(the_list, False) for v in the_dict.values(): print(v) False False for k in the_dict: print(k) a b
✔️ setdefault
Метод помогает указать стандартное значение ключа. При этом не изменять его, если оно уже есть по переданному ключу:
the_dict = {"a": 1, "b": 2} the_dict.setdefault("a", True) print(the_dict.keys()) dict_keys(['a', 'b']) print(the_dict.get("a", None)) 1
Изучить все методы можно на курсе Skypro «Python-разработчик». Опытные преподаватели-практики дадут необходимый минимум теории, помогут освоить практические навыки и поделятся лайфхаками разработки.
Вложенные словари
Словари могут содержать другие словари: в Python их называют вложенными. Они полезны при сериализации и десериализации. Их создают так:
the_dict = {"shape": "round", "size": 2} nested_dict = {"first_color": "blue", "second_color": "red"} the_dict["color"] = nested_dict print(the_dict) {'shape': 'round', 'size': 2, 'color': {'first_color': 'blue', 'second_color': 'red'}}
Альтернативные типы данных
В старых версиях Python ключи словаря не были упорядочены. Чтобы решить эту проблему, использовали модуль collections, а именно объект OrderedDict. Этот модуль тоже содержит и другие варианты словаря.
✔️ OrderedDict
Вместо типичной реализации по типу хеш-таблицы эта использует список кортежей, чтобы сохранять порядок ключей. В новых версиях языка в этом объекте уже нет смысла:
import collections the_dict = collections.OrderedDict({"a": 1, "b": 2, 3: "c"}) print(the_dict) OrderedDict([('a', 1), ('b', 2), (3, 'c')]) the_dict["d"] = "value" print(the_dict) OrderedDict([('a', 1), ('b', 2), (3, 'c'), ('d', 'value')])
✔️ Defaultdict
Объект класса defaultdict позволяет избежать ошибки KeyError при обращении к несуществующему ключу. Он возвращает стандартное значение, вычисляемое указанной функцией:
from collections import defaultdict def get_value(): return "Ключ не указан" the_dict = defaultdict(get_value) the_dict["a"] = 1 the_dict["b"] = 2 print(the_dict["a"]) 1 print(the_dict["b"]) 2 print(the_dict["c"]) Ключ не указан
✔️ Counter
Объект класса Counter полезен, когда нужно получить количество повторов объектов итерируемой сущности:
from collections import Counter the_string = "AABCBBCAACBCABBABABBACCACBCBBBCA" the_counter = Counter(the_string) print(the_counter) Counter({'B': 13, 'A': 10, 'C': 9})
Главное о работе со словарями в Python
- Словари представляют структуру данных типа «ключ-значение». Их создают с помощью ключевого слова dict, синтаксической конструкции и выражения-генератора.
- Метод copy позволяет скопировать словарь, метод get — проверить наличие ключа, функция len — определить длину словаря в Python.
- В качестве ключа и значения можно использовать любую структуру данных.
- Ключи, значения или всё вместе получают с помощью трех методов словаря: keys, values, items.
Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа под силу даже тем, у кого нет опыта в IT. Преподаватели — практикующие разработчики с опытом найма и наставничества.
После курса у вас будет достаточно опыта и знаний, чтобы претендовать на позиции младшего разработчика в компаниях или брать проекты на фрилансе. А еще мы поможем составить цепляющее резюме и подготовиться к вопросам рекрутеров на собеседованиях.
Добавить комментарий