- Словари (dict) и работа с ними. Методы словарей
- Методы словарей
- Словари в Python: что нужно знать и как пользоваться
- Что такое словарь
- Как создать словарь в Python
- Метод pop()
- Метод keys()
- Метод values()
- Метод items()
- Что запомнить
- Словари в Python и методы работы с ними
- Что такое словарь
- Для каких целей нам будут полезны словари?
- Создание словаря в Python
- Изменение словаря
- Перебор элементов словарей в Python
- Методы словарей в Python
- Итог
Словари (dict) и работа с ними. Методы словарей
Сегодня я расскажу о таком типе данных, как словари, о работе со словарями, операциях над ними, методах, о генераторах словарей.
Словари в Python — неупорядоченные коллекции произвольных объектов с доступом по ключу. Их иногда ещё называют ассоциативными массивами или хеш-таблицами.
Чтобы работать со словарём, его нужно создать. Сделать это можно несколькими способами. Во-первых, с помощью литерала:
Во-вторых, с помощью функции dict:
В-третьих, с помощью метода fromkeys:
В-четвертых, с помощью генераторов словарей, которые очень похожи на генераторы списков.
Теперь попробуем добавить записей в словарь и извлечь значения ключей:
: Как видно из примера, присвоение по новому ключу расширяет словарь, присвоение по существующему ключу перезаписывает его, а попытка извлечения несуществующего ключа порождает исключение. Для избежания исключения есть специальный метод (см. ниже), или можно перехватывать исключение.
Что же можно еще делать со словарями? Да то же самое, что и с другими объектами: встроенные функции, ключевые слова (например, циклы for и while), а также специальные методы словарей.
Методы словарей
dict.clear() — очищает словарь.
dict.copy() — возвращает копию словаря.
classmethod dict.fromkeys(seq[, value]) — создает словарь с ключами из seq и значением value (по умолчанию None).
dict.get(key[, default]) — возвращает значение ключа, но если его нет, не бросает исключение, а возвращает default (по умолчанию None).
dict.items() — возвращает пары (ключ, значение).
dict.keys() — возвращает ключи в словаре.
dict.pop(key[, default]) — удаляет ключ и возвращает значение. Если ключа нет, возвращает default (по умолчанию бросает исключение).
dict.popitem() — удаляет и возвращает пару (ключ, значение). Если словарь пуст, бросает исключение KeyError. Помните, что словари неупорядочены.
dict.setdefault(key[, default]) — возвращает значение ключа, но если его нет, не бросает исключение, а создает ключ со значением default (по умолчанию None).
dict.update([other]) — обновляет словарь, добавляя пары (ключ, значение) из other. Существующие ключи перезаписываются. Возвращает None (не новый словарь!).
dict.values() — возвращает значения в словаре.
Для вставки кода на Python в комментарий заключайте его в теги
Словари в Python: что нужно знать и как пользоваться
Продолжаем осваивать «змеиный» язык. Сегодня поговорим о словарях — важном инструменте для хранения данных в Python.
Иллюстрация: Оля Ежак для Skillbox Media
Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.
Нет, словари нужны не для того, чтобы переводить запутанный код программистов на человеческий. Их используют для того, чтобы удобно хранить данные и быстро получать к ним доступ по запросу. В этой статье подробно разберём, что такое словари и как с ними работать в Python.
А если вы уже знакомы со словарями и хотите освежить в памяти отдельные моменты, используйте навигацию или скачайте шпаргалку в конце статьи.
Что такое словарь
Словарь в языках программирования — это что-то вроде телефонной книги, где под каждым номером скрывается какой-то человек.
Только на языке разработчиков номера называют ключами, а людей, которым они принадлежат, — значениями. Вот как это можно представить в виде таблицы:
При этом ключи в словарях уникальны, а значения могут повторяться. Условно говоря, дизайнеру Валере может принадлежать сколько угодно номеров — но у каждого номера может быть только один владелец.
Мы привели пример с телефонной книгой, но вы можете хранить в словаре всё что угодно: названия песен, имена покупателей, товары в интернет-магазине и так далее. При этом стоит помнить важное правило:
Ключами могут быть строки, числа (целые и дробные) и кортежи. Нельзя использовать списки, словари и другие изменяемые типы данных. В значения можно «положить» любые типы данных — и даже новые словари.
Например, давайте в качестве ключа укажем название книги, а значением сделаем её автора.
Ключ | Значение |
---|---|
«Гарри Поттер и философский камень» | Джоан Роулинг |
«Убить пересмешника» | Харпер Ли |
«Грокаем алгоритмы» | Адитья Бхаргава |
Теперь, если у нас есть название книги, мы можем быстро найти её автора. Этим словари и удобны: знаем ключ — моментально получаем значение.
👉 Словарь — это неупорядоченная структура данных. Это значит, что все пары «ключ — значение» хранятся в произвольном порядке. Идея в том, что нам неважно, где находится элемент: в начале, в серединие или в конце. Важно то, что он лежит где-то внутри и мы можем при случае его достать.
Пример упорядоченной структуры — это список. Там у всех элементов есть свои индексы, благодаря которым их можно отсортировать как душе угодно. Если хотите больше знать о списках, читайте другую нашу статью. А мы пойдём дальше — создадим наш первый словарь.
Как создать словарь в Python
Словари в Python оформляются фигурными скобками. Внутри них находятся пары «ключ — значение». Первым пишется ключ, а затем, через двоеточие, — значение. Сами пары отделяются друг от друга запятыми.
Метод pop()
Что делает: удаляет элемент из словаря по ключу.
harryPotterAuthor = dict.pop('Гарри Поттер и философский камень') print(harryPotterAuthor) > Джоан Роулинг print(dict) > 'Убить пересмешника': 'Харпер Ли'>
Метод keys()
Что делает: возвращает все ключи из словаря — но без значений.
dictKeys = dict.keys() print(dictKeys) > ['Гарри Поттер и философский камень', 'Убить пересмешника']
Метод values()
Что делает: возвращает все значения из словаря — но без ключей.
dictValues = dict.values() print(dictValues) > ['Джоан Роулинг', 'Харпер Ли']
Метод items()
Что делает: возвращает все пары «ключ — значение».
dictItems = dict.items() print(dictItems) > [('Гарри Поттер и философский камень', 'Джоан Роулинг'), ('Убить пересмешника', 'Харпер Ли')]
Что запомнить
Лучше не заучивать голую теорию, а сразу отрабатывать знания на практике. Начать можно, например, с бесплатных упражнений на w3schools.com. А чтобы быстро находить нужный метод и не ходить каждый раз в гугл, можете сохранить себе шпаргалку по ссылке или таблицу ниже.
Метод | Что делает |
---|---|
clear() | Удаляет все элементы из словаря |
copy() | Создаёт копию словаря |
update() | Добавляет в словарь одну или несколько пар «ключ — значение» |
pop() | Удаляет элемент из словаря по ключу |
keys() | Возвращает список ключей из словаря |
values() | Возвращает список значений из словаря |
items() | Возвращает все пары «ключ — значение» |
popitem() | Удаляет последнюю добавленную пару «ключ — значение» |
get() | Возвращает значение из словаря по ключу — или None, если такого ключа не существует. Можно указать своё значение в качестве второго аргумента |
setdefault() | Возвращает значение указанного ключа. Если ключа не существует, создаёт его и добавляет в словарь со значением None или тем, что вы добавите в качестве второго аргумента |
Читайте также:
Словари в Python и методы работы с ними
В одной из прошлых статей я разбирал списки в Python и методы работы с ними. Сегодня мы узнаем, как работать со словарями в Python и изучим их методы.
Что такое словарь
Словари (dict) хранят в себе ключи и их объекты, где ключ – это имя объекта в словаре. Их могут называть ассоциативными массивами или хеш-таблицами.
Как мы знаем, в списках доступ к элементам осуществляется по индексу, который является неотрицательным числом. Индекс в списках создается автоматически при добавлении новых элементов, а индексами в словарях служат ключи, и их мы должны объявлять сами.
Для каких целей нам будут полезны словари?
- Подсчет каких-то предметов, где ключи – названия предметов, а объект – их количество.
- Для экономии памяти, если есть массив, который использует не все индексы по порядку.
- Установка соответствий между объектами, сортировка.
- Хранение данных разных объектов (например: ключ – ID пользователя ВКонтакте, а объект – массив с данными).
Ключом может быть произвольный неизменяемый тип данных: различные числа, строки, кортежи. Ключом в словаре не может быть множество, но может быть неизменяемый элемент типа frozenset. Значением элемента словаря может быть любой изменяемый или неизменяемый тип данных.
Создание словаря в Python
Пустой словарь в Python, как и в JavaScript, можно создать двумя способами: через функцию dict() или с помощью фигурных скобок. Рассмотрим на примере:
#Создание через функцию: dict1 = dict() #Создание через фигурные скобки: dict2 = <> print(type(dict1)) #Выведет print(type(dict2)) #Выведет print(dict1) #Выведет <> print(dict2) #Выведет <>
Теперь создадим уже заполненный словарь через функцию и фигурные скобки:
#Создание через функцию: dict1 = dict(car='машина', apple='яблоко') #Создание через фигурные скобки: dict2 = < 'car': 'машина', 'apple': 'яблоко' >print(dict1) #Выведет print(dict2) #Выведет
Изменение словаря
Добавим в наш словарь объект. Для этого нам нужно придумать значение ключу. Рассмотрим на примере:
dict = < 'car': ‘машина’, 'apple': 'яблоко' >dict['orange'] = 'апельсин' #В квадратных скобках указываем имя ключа, а значение после знака равно print(dict) #Выведет
Для удаления ключа и его объекта в словаре используют метод del, указывая имя ключа в квадратных скобках:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >del dict['orange'] print(dict) #Выведет
Перебор элементов словарей в Python
Для вывода всех ключей и значений по порядку используем цикл с оператором in:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >for key in dict: print(key, dictPython работа со словарями примеры) #Выведет: #car машина #apple яблоко #orange апельсин
Для вывода значения по ключу используем имя словаря и квадратные скобки с именем нужного ключа:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict['car']) #Выведет 'машина'
Методы словарей в Python
copy() – создание копии словаря. Рассмотрим на примере:
dict1 = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >dict2 = dict1.copy() print(dict2) #Выведет
get() – получение значения по ключу. Рассмотрим на примере:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict.get('car')) #Выведет 'машина'
clear() – очистка словаря. Рассмотрим на примере:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >dict.clear() print(dict) #Выведет <>
keys() – получение всех ключей словаря. Рассмотрим на примере:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict.keys()) #Выведет dict_keys(['car', 'apple', 'orange'])
values() – получение всех значений элементов словаря. Пример:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict.values()) #Выведет dict_values(['машина', 'яблоко', 'апельсин'])
items() – получение всех элементов словаря, включая ключи. Рассмотрим на примере:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict.items()) #Выведет dict_items([('car', 'машина'), ('apple', 'яблоко'), ('orange', 'апельсин')])
pop() – удаляет и возвращает значение ключа. Рассмотрим на примере:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict.pop('car')) #Выведет ‘машина’ print(dict) #Выведет
popitem() – удаляет и возвращает имя и значение ключа. Пример:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict.pop()) #Выведет ('orange', 'апельсин') print(dict) #Выведет
setdefault() – получение значения по ключу, если такой ключ присутствует в словаре. Когда такого ключа нет, он создается со значением None (если оно не указано в свойствах). Рассмотрим на примере:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >print(dict.setdefault(‘car’) #Выведет 'машина' print(dict.setdefault('home', 'дом') #Выведет 'дом' print(dict) #Выведет
update(<>) – обновить значения по ключам, добавление новых ключей:
dict = < 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' >dict.update() print(dict) #Выведет
Итог
Мы изучили словари в Python и методы работы с ними. Надеюсь, статья была полезной для вас. Удачи!