img
img
13 июня 2022
14 июня 2022
6 мин
154

Как работать со словарями в Python

Словарь создают с помощью ключевого слова dict, синтаксиса языка.

img

Словарь — это структура данных, которая позволяет записывать и получать различные значения по ключу. В некоторых языках ключами и значениями словаря могут быть только специфические объекты. А в 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

Итерация словаря

Ключи, значения или всё вместе получают с помощью трех методов словаря. Для ключей — 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

Вложенные словари

Словари могут содержать другие словари: в 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. Преподаватели — практикующие разработчики с опытом найма и наставничества.

После курса у вас будет достаточно опыта и знаний, чтобы претендовать на позиции младшего разработчика в компаниях или брать проекты на фрилансе. А еще мы поможем составить цепляющее резюме и подготовиться к вопросам рекрутеров на собеседованиях.

img
Подпишитесь на рассылку, чтобы Не упустить что-нибудь новое
Просто и понятно о том, как получить новую профессию


    Дадим нужные знания и поможем получить работу!
    Регистрируйтесь на курс и учитесь у экспертов-практиков.
    Профессия
    за 11 месяцев
    Android-разработчик

    Научитесь создавать приложения для Android с нуля. Соберете портфолио и устроитесь на работу с зарплатой от 100 000 ₽ на старте.

    3 879 ₽/мес.
    Ещё по теме
    Что такое Agile

    Agile — это группа гибких методов, чтобы улучшать продукт.

    20 июня 2022
    4 мин
    5 причин освоить Python

    Это универсальный и перспективный язык, который подходит новичкам.

    Как отбирают кандидатов в IT-компаниях

    IT-рекрутер обращает внимание на то, как вы мыслите и рассуждаете.

    5 причин научиться программировать на Java

    Этот язык постоянно развивается, но остается стабильным, на нём кодят уже 27 лет.

    Каково быть тестировщиком: 4 истории о боли и радости

    Рассказы тестировщиков: какие ошибки они замечают в обычной жизни.

    Что такое Node.js и зачем ее изучать

    Node.js — платформа с открытым исходным кодом для работы с JavaScript.

    09 июня 2022
    5 мин
    Что такое массивы в Java и как с ними работать

    Массив — это набор однотипных элементов, упорядоченных по номерам.

    Как написать тест-кейс

    Создавайте простые тест-кейсы и учитывайте интересы пользователя.

    06 июня 2022
    6 мин
    Мифы о программистах

    Есть стереотипы, что программисты — это мужчины, всемогущие хакеры и интроверты.

    17 мая 2022
    2 мин
    Код: что ты такое

    Код определяет внешний вид и внутреннюю логику программ, сайтов.

    17 мая 2022
    2 мин
    7 англоязычных подкастов для тех, кто хочет прокачаться в IT

    Про Python, frontend-разработку, мягкие навыки, работу над проектами.

    17 мая 2022
    3 мин
    6 ютуб-каналов для разработчиков

    Ответы на вопросы новичков, интервью успешных спецов, полезные советы.

    17 мая 2022
    2 мин
    Женщины в IT

    Достижения и цитаты шести героинь, которые не побоялись попробовать себя в IT.

    17 мая 2022
    2 мин
    Почему IT — сфера будущего

    Информационные технологии помогают бизнесу зарабатывать и упрощают жизнь.

    IT-компания — это не только Google

    Рассказываем про «Тинькофф», «Билайн» и другие компании.

    16 мая 2022
    2 мин
    Как составить и оформить баг-репорт

    Указывайте в отчете только одну ошибку, прикладывайте скрины, сообщения и коды.

    04 мая 2022
    6 мин
    Как работать со списками в Python

    Учимся добавлять и изменять элементы, объединять и копировать списки.

    02 мая 2022
    5 мин
    Цикл for в Java: что это, как с ним работать

    Конструкция, чтобы много раз выполнять один и тот же участок кода.

    Как работать с модулем JSON в Python

    JSON часто применяют, когда разрабатывают API и веб-приложения.

    25 апреля 2022
    9 мин
    Как IT-специалисту из России найти работу за рубежом в 2022 году

    Есть сервисы, платформы и телеграм-каналы с вакансиями по всему миру.

    21 апреля 2022
    6 мин
    Что такое HTML: основные теги

    С помощью HTML структурируют страницу на сайте, добавляют картинки, таблицы, списки.

    Как работает цикл for в Python

    Цикл for используют, когда количество повторов известно заранее.

    Комьюнити для разработчика

    Есть комьюнити на платформах, под эгидой компаний или самоорганизующиеся.

    07 апреля 2022
    6 мин
    Гайд: как определить, какое направление в IT тебе подходит

    Обязанности и зарплата аналитика, Python- и Java-разработчиков и не только.

    Правильное питание на удаленке. Почему это важно?

    Правильное питание — это не о жестких диетах и полном отказе от любимых продуктов.

    01 апреля 2022
    7 мин
    Как я нашла время на учебу, когда времени не было совсем

    Благодаря методу «круга-пирога» увидите свое время и возьмете его под контроль.

    9 причин, почему не получается внедрять полезные привычки

    Ищите мотивацию, хвалите себя, визуализируйте план и результат.

    Как больше успевать: зачем есть по одной лягушке в день и как справиться со слоном

    Лягушки — небольшие, но неприятные дела, слоны — долговременные задачи.

    Как поставить цель и не бросить на полпути

    Когда ставите цель, отталкивайтесь от проблемы и конкретизируйте решение.

    Кто такой менеджер проектов, чем занимается и как им стать

    Этот специалист контролирует все этапы проекта и приводит его к успеху.

    30 марта 2022
    8 мин
    Как не угробить здоровье на удаленке

    Советы всем удаленщикам — больше двигаться, делать зарядку, разминку для глаз.

    30 марта 2022
    9 мин
    Junior, Middle, Senior в разработке — кто есть кто и как перейти на уровень выше

    Junior зарабатывает от 40 000 ₽, Middle от 100 000 ₽, а Senior от 250 000 ₽ и выше.

    29 марта 2022
    12 мин
    Как банковская служащая в 32 года с нуля перешла в IT и в 40 открыла свою компанию по разработке онлайн-игр

    Совет от героини: сделайте первый шаг, дальше будет проще; учитесь и идите вперед.

    Пять приложений, чтобы не отвлекаться от учебы и работы

    Фишки и стоимость Forest, WaterDo, SleepTown, Alarmy, Pomodoro Timer Lite.

    29 марта 2022
    5 мин
    Язык SQL: что это такое и зачем он нужен

    SQL используют в банках, торговле, перевозках: везде, где много информации.

    29 марта 2022
    7 мин
    Как освоить c нуля IT-профессию и перейти на новую работу без опыта

    Сначала поставьте цель: выберите сферу и определите, кем видите себя через 10 лет.

    Словарь IT-сленга

    Термины разработки, Scrum, неформального общения, организационных процессов.

    29 марта 2022
    13 мин
    Подборка: 33 книги и подкаста для начинающих программистов

    Узнаете о работе программиста и поймете, как писать хороший код.

    28 марта 2022
    10 мин
    Хакнуть мозг: как современные знания помогают мозгу развиваться и учиться

    Мозг меняется всю жизнь. Мы можем на него влиять: изучать новое, развивать навыки.

    28 марта 2022
    8 мин
    Что такое CSS и как с ним работать

    С помощью CSS задают цвет, размеры, анимацию, адаптируют сайт под устройства.

    16 марта 2022
    9 мин
    css
    Как создать телеграм-бота на Python

    Python — самый популярный язык программирования в феврале 2022 года.

    16 марта 2022
    9 мин
    Какие профессии в IT подойдут гуманитарию

    Гуманитарию подойдут профессии тестировщика, веб-дизайнера и не только.

    15 марта 2022
    9 мин
    Frontend или backend: чем отличаются и какой вид разработки выбрать

    Фронтендер создает интерфейс продукта, бэкендер работает с серверной частью.

    15 марта 2022
    7 мин
    Кто такой Java-разработчик, чем занимается и как им стать

    Обязанности Java-разработчика — писать код, тестировать и улучшать его.

    15 марта 2022
    7 мин
    Что такое IT-сфера и почему она сейчас так популярна

    IT-отрасль привлекает удаленкой, карьерным ростом, высоким доходом.

    04 марта 2022
    7 мин
    it
    Как установить Python на компьютер и начать на нём писать

    Воспользуйтесь Google Colab, онлайн-интерпретаторами или скачайте Python.

    Postman: как пользоваться программой для тестирования API

    Бесплатный сервис позволяет писать тесты, поддерживает разные типы API.

    04 марта 2022
    6 мин
    api
    Google Colab: что это такое и как с ним работать

    Colab используют, чтобы создавать код на Python прямо в браузере.

    04 марта 2022
    4 мин
    Как перейти в разработчики из другой профессии

    Освоить новую профессию реально с нуля в любом возрасте, главное — мотивация.

    03 марта 2022
    8 мин
    Как помочь ребенку выбрать профессию

    Не выбирайте по принципу «чем проще, тем лучше» и уважайте желания ребенка.

    03 марта 2022
    7 мин
    Нужно ли высшее образование программисту: сравниваем все «за и «против»

    Важнее опыт и проекты в портфолио, но иногда высшее образование все-таки нужно.

    02 марта 2022
    5 мин
    Стоит ли переходить на удаленку: плюсы и минусы

    Сегодня удаленка доступна для разных сфер: ИТ, маркетинг, сервис, продажи.

    02 марта 2022
    6 мин
    Какой язык программирования выбрать новичку

    Выбирайте по уровню спроса у работодателей и направлению в программировании.

    24 февраля 2022
    7 мин
    Фильмы про программистов: лучшие фильмы и сериалы про компьютерных гениев

    20 фильмов и сериалов для тех, кому интересен мир информационных технологий.

    24 февраля 2022
    7 мин
    Фронтенд-разработчик: кто это такой и как им стать с нуля

    Frontend-разработчик создает внешнюю — пользовательскую часть веб-ресурса.

    24 февраля 2022
    8 мин
    Backend-разработчик: кто это такой и чем он занимается

    Backend-разработчик отвечает за внутреннюю — серверную сторону веб-ресурса.

    24 февраля 2022
    9 мин
    Что такое спринты в программировании и как их выполнять

    Спринты используют в долгих проектах и сложных продуктах.

    Как начать изучать Python

    Преимущества Python — понятный синтаксис и читаемость, готовые библиотеки.

    24 февраля 2022
    9 мин
    Jupyter Notebook: что это такое и как им пользоваться

    Jupyter-ноутбуки применяют для визуализации данных в big data и data science.

    24 февраля 2022
    7 мин
    Как развить soft skills

    Soft skills помогают развивать компетенции, осваивать новые тенденции в работе.

    24 февраля 2022
    11 мин
    Как начать изучать Java

    На Java разрабатывают всё: от приложений и ПО до технологий Big Data.

    kralbetbetturkeyikimislibahis1xbetm.infohipas.infohttps://www.wiibet.com/restbetcdn.com
    Вставить формулу как
    Блок
    Строка
    Дополнительные настройки
    Цвет формулы
    Цвет текста
    #333333
    Используйте LaTeX для набора формулы
    Предпросмотр
    \({}\)
    Формула не набрана
    Вставить