Bemind
Учебник Python
Учебник Python
  • Python
    • Python Lists
      • Списковые включения в Python (Полное руководство с примерами)
      • Исправление ValueError: Слишком Много Значений Для Распаковки в Python
      • Как добавить словарь в список в Python
      • Как добавить строку в список в Python
      • Разница между массивами и списками в Python
      • Python: Различия между списками и кортежами
      • Как проверить, пуст ли список в Python
      • Как Итерировать (Циклически Проходить) По Списку в Python
      • Python List sort(): Подробное руководство по сортировке списков
      • Python List Extend: Как добавить несколько элементов в список
      • Python: Найти Индекс Всех Вхождений Элемента в Списке
      • Конвертация списка словарей в Pandas DataFrame
      • Генерация случайных чисел в Python
      • Поиск Индекса в Списке Python: Найти Первое, Последнее или Все Вхождения
      • Добавить в начало списка в Python (Вставить в начало)
      • Найти дубликаты в списке Python
      • Python: Умножение Списков (6 Различных Способов)
      • Python списки: Полный обзор
      • Python: Выбор случайного элемента из списка
      • 4 Способа Очистить Список в Python
      • Объяснение ошибки IndexError в Python: индекс списка выходит за пределы допустимого диапазона
      • Python: Получение индекса максимального элемента в списке
      • Python: Объединение списков – Слияние списков (8 способов)
      • Python: Проверка наличия элемента в списке
      • Python: Проверка наличия элемента в списке
      • Удаление элемента из списка в Python (pop, remove, del, clear)
      • Как перевернуть список в Python (6 способов)
      • Python: Замена элемента в списке (6 различных способов)
      • Python: Удаление дубликатов из списка (7 способов)
      • Python: Преобразование словаря в список кортежей (4 простых способа)
      • Python: Перемешать Список (Случайное Распределение Элементов Списка в Python)
      • Python: Пересечение двух списков
      • Python: Вычитание двух списков (4 простых способа!)
      • Длина или Размер Списка в Python: 5 Способов Узнать Длину Списка
      • Python: Транспонирование списка списков (5 простых способов!)
      • Python: Разделение списка (Пополам, на части)
      • Python: Комбинации списка (Получить все комбинации списка)
      • Python: Выравнивание списка списков (4 способа)
      • Разница между списками в Python: Нахождение разницы между двумя списками Python
      • Python: Найти среднее значение списка или списка списков
      • Как добавлять элементы в списки в Python – 4 простых способа!
      • Списковые включения в Python (Полное руководство с примерами)
      • 6 способов преобразовать список Python в строку
    • Python Dictionaries
      • Понимание словаря Python (с примерами)
      • Исправляем ValueError: Слишком Много Значений Для Распаковки в Python
      • Как добавить словарь в список в Python
      • Преобразование JSON в словарь Python
      • Полное руководство по вложенным словарям в Python
      • Копирование словаря в Python: Полное руководство
      • Конвертация списка словарей в Pandas DataFrame
      • Поиск дубликатов в списке Python
      • Полный обзор словарей в Python
      • Python: Добавление пары Ключ:Значение в Словарь
      • Python: Сортировка словаря по значениям
      • Слияние Словарей в Python – Комбинирование Словарей (7 Способов)
      • Python: Удаление Дубликатов из Списка (7 Способов)
      • Python: Преобразование словаря в список кортежей (4 простых способа)
      • Python: Красивая Печать Словаря (Dictionary) – 4 Способа
      • Python: Проверка пуст ли словарь (5 способов!)
      • Copy of Python: Проверка пуст ли словарь (5 способов!)
      • Python: Проверьте, существует ли ключ (или значение) в словаре (5 простых способов)
      • Python: Проверьте, существует ли ключ (или значение) в словаре (5 простых способов)
      • Python: Получение Ключа Словаря с Максимальным Значением (4 Способа)
      • Python: Удаление ключа из словаря (4 разных способа)
      • Как красиво вывести JSON-файл в Python (6 методов)
    • Python Strings
      • Python Капитализация Строк: Руководство по Преобразованию слов в Заглавные
      • Python strip: Как обрезать строку в Python
      • Python Обратная Строка: Руководство по Реверсированию Строк
      • Как Удалить Префикс или Суффикс из Строки в Python
      • Преобразование строки в формат заголовка в Python с помощью str.title()
      • Как добавить строку в список в Python
      • Python String startswith: Проверка, начинается ли строка с подстроки
      • Python String endswith: Проверка того, заканчивается ли строка подстрокой
      • Как удалить первый или последний символ из строки в Python
      • Как исправить: SyntaxError в Python - EOL при сканировании строкового литерала
      • Python String Contains: Проверка Наличия Подстроки в Строке
      • Как проверить, пустая ли строка в Python
      • Python Новая Строка и Как Печатать Без Переноса Строки
      • Как Конкатенировать Строки в Python: Полное Руководство
      • Python: Подсчет слов в строке или файле
      • Как создать список алфавита в Python
      • Python: Конкатенация строки и целого числа (Int)
      • Python: Сортировка строки (4 различных способа)
      • Python zfill и rjust: Добавление нулей в строку в Python
      • Python: Целое в Двоичное (Преобразование целого числа в двоичную строку)
      • Python rfind: Нахождение индекса последней подстроки в строке
      • Python SHA256 хеширование алгоритм: объяснение
      • Python: Усечение числа с плавающей точкой (6 различных способов)
      • Выбор между методами Python isdigit(), isnumeric() и isdecimal()
      • Python: Удаление специальных символов из строки
      • Python Приведение Строки к Нижнему Регистру с помощью .lower(), .casefold(), и .islower()
      • Python программа для проверки, является ли строка палиндромом (6 методов)
      • Python: Найдите все перестановки строки (3 легких способа!)
      • Python: Удаление пунктуации из строки (3 разных способа!)
      • Python: Найти индекс (или все индексы) подстроки в строке
      • Python: Удаление символов новой строки из строки
      • Python: Удаление символа из строки (4 способа)
      • Python: Количество вхождений в строке (4 способа!)
    • Встроенные функции Python
      • abs()
      • ascii()
      • aiter()
      • all()
      • any()
      • anext()
      • bin()
      • bool()
      • breakpoint()
      • bytearray()
      • bytes()
      • callable()
      • chr()
      • classmethod()
      • compile()
      • complex()
      • delattr()
      • dict()
      • dir()
      • divmod()
      • enumerate()
      • eval()
      • exec()
      • filter()
      • float()
      • format()
      • frozenset()
      • getattr()
      • globals()
      • hasattr()
      • hash()
      • help()
      • hex()
      • id()
      • input()
      • int()
      • issubclass()
      • iter()
      • len()
      • list()
      • locals()
      • map()
      • max()
      • memoryview()
      • min()
      • next()
      • object()
      • oct()
      • open()
      • ord()
      • pow()
      • print()
      • property()
      • range()
      • repr()
      • reversed()
      • round()
      • set()
      • setattr()
      • isinstance()
      • slice()
      • zip()
      • type()
      • sorted()
      • staticmethod()
      • str()
      • sum()
      • super()
      • tuple()
      • vars()
      • import()
    • Cобеседования Python. Разбор реальных вопросов.
    • Встроенные методы в Python
  • Учебники по Pandas и Numpy
    • Numpy
      • Функция активации ReLU для глубокого обучения: полное руководство по выпрямленному линейному блоку
      • Как нормализовать массивы NumPy (минимальное-максимальное масштабирование, Z-оценка, L2)
      • NumPy where: Условная обработка элементов массива
      • NumPy linspace: создание равномерно расположенных массивов с помощью np.linspace
      • Как рассчитать векторное произведение в Python
      • Разделение NumPy: Разделение массива NumPy на части
      • NumPy: Лучшие способы применения функции к массиву
      • NumPy full: Создание массивов с заданным значением
      • NumPy clip(): Ограничьте значения массива минимальным и максимальным значениями
      • NumPy cumsum: Расчет кумулятивных сумм массивов NumPy
      • Изучаем функцию np.histogram в NumPy: создаем гистограмму
      • NumPy arange(): Полное руководство (с примерами)
      • Руководство по индексации и срезам массивов NumPy: Полное руководство
      • NumPy argmin(): Получение индекса минимального значения в массивах
      • Выравнивание массива с помощью NumPy flatten
      • Объединение массивов NumPy по различным осям с использованием функции stack
      • Удаление размерности из массивов NumPy с помощью NumPy Squeeze
      • Функция np.repeat() NumPy: Повторение массивов NumPy
      • Использование функции NumPy.exp() для вычисления экспоненты
      • Реализация функции сигмоида на Python
      • NumPy Pad: Использование np.pad() для дополнения массивов и матриц
      • np.argmax(): Как использовать NumPy Argmax
      • NumPy logspace: Понимание функции np.logspace()
      • Использование NumPy Tile для Расположения Массивов
      • NumPy Zeros: Создание массивов и матриц с нулями в NumPy
      • Использование числа Пи в Python (NumPy и Math)
      • Распределение Нормального (Гауссова) Распределения в Numpy (Случайное Нормальное в Numpy)
      • NumPy для Data Science на Python
      • Расчет скалярного произведения с использованием Numpy в Python
      • Расчет натурального логарифма на Python
    • Pandas
      • Python сводные таблицы – Полное руководство
      • Изучение API стиля Pandas
      • Объяснение группировки по нескольким столбцам в Pandas с примерами
      • Удаление индексной колонки DataFrame в Pandas: Руководство с примерами
      • Pandas Quantile: Расчет процентилей в DataFrame
      • Как рассчитать скользящее среднее (среднее арифметическое) в Pandas
      • Руководство по использованию метода fillna в Pandas для работы с отсутствующими данными в DataFrame
      • Pandas unique(): Получение уникальных значений в DataFrame
      • Распакуйте Ваши Данные с Помощью Функции Melt в Pandas
      • Pandas date_range: Как Создать Диапазон Дат в Pandas
      • Сброс индекса в Pandas: как сбросить индекс в Pandas
      • Pandas replace() – Замена значений в DataFrame Pandas
      • Перемещение столбца DataFrame Pandas на позицию (В начало и в конец)
      • Учебное пособие по Python Pandas: полное руководство
      • Pandas: Замена NaN на нули
      • Преобразование DataFrame Pandas в файл Pickle
      • Конвертация Pandas DataFrame в JSON
      • Преобразование DataFrame Pandas в Словарь
      • Преобразование Pandas DataFrame в Список
      • Чтение файлов Parquet в Pandas с помощью pd.read_parquet
      • Pandas dropna(): Удаление отсутствующих записей и столбцов в DataFrame
      • Как Добавить Новый Столбец в DataFrame Pandas
      • Подсчёт уникальных значений в Pandas
      • Отображение всех столбцов и строк в DataFrame Pandas
      • Pandas to_excel: Запись DataFrames в файлы Excel
      • Как использовать Pandas для чтения файлов Excel в Python
      • Преобразование списка словарей в Pandas DataFrame
      • Как добавить/вставить строку в DataFrame Pandas
      • Диаграмма рассеяния в Pandas: Как создать диаграмму рассеяния в Pandas
      • Pandas to_datetime: Преобразование строки Pandas в дату и время
      • Введение в Pandas для Data Science
      • Индексация, Выборка и Присваивание Данных в Pandas
      • Суммирование и Анализ Pandas DataFrame
      • Преобразование столбцов Pandas с помощью map и apply
      • Группировка данных в Pandas с использованием cut и qcut
      • Дата и время в Pandas и Python
      • Очистка и подготовка данных в Pandas и Python
      • Pandas GroupBy: группировка, суммирование и агрегация данных в Python
      • Pandas Дата и Время в Части Даты (месяц, год и т.д.)
      • Pandas: Получение номера строки из DataFrame
      • Вычисление Взвешенного Среднего в Pandas и Python
      • Как перемешать строки Pandas Dataframe в Python
      • Pandas: количество столбцов (подсчет столбцов в DataFrame)
      • Pandas Sum: сложение столбцов и строк DataFrame
      • Pandas Diff: Вычисление Разницы Между Строками Pandas
      • Нормализация столбца или датафрейма Pandas (с использованием Pandas или sklearn)
      • Функция Rank в Pandas: Ранжирование данных в Dataframe (Эквивалент SQL row_number)
      • Pandas Describe: Описательная статистика вашего Dataframe
      • Pandas Shift: Перемещение столбца DataFrame вверх или вниз
      • 7 Способов Выполнения Выборки Данных в Pandas
      • Экспорт DataFrame Pandas в CSV файл – Использование .to_csv()
      • Pandas: Итерация по строкам DataFrame в Pandas
      • Pandas: Преобразование значений столбца в строки
      • Дисперсия в Pandas: Вычисление дисперсии столбца в Pandas Dataframe
      • Pandas: Создание DataFrame из списков (5 способов!)
      • Pandas Rename Index: Как переименовать индекс DataFrame в Pandas
      • Pandas: Подсчёт уникальных значений в объекте GroupBy
      • Pandas: Добавить дни к колонке с датами
      • Среднее в Pandas: Как рассчитать среднее для одной или нескольких колонок
      • Pandas Column to List – Конвертируйте колонку Pandas в список
      • Транспонирование Dataframe в Pandas
      • Python: Разделение DataFrame Pandas
      • Как получить имена столбцов в DataFrame Pandas
      • Pandas: Количество строк в DataFrame (6 способов)
      • Создание пустого DataFrame Pandas и добавление данных
      • Как переименовать столбцы в Pandas DataFrame (с примерами)
      • Изменение порядка столбцов в Pandas: использование метода reindex и метода insert
      • Pandas get_dummies (One-Hot кодирование), объяснение
      • Относительные и Абсолютные Частоты в Python и Pandas
      • Финансовый год – Определение финансового года в Pandas
      • Как сортировать данные в DataFrame Pandas
  • Учебники Matplotlib и Seaborn
    • Seaborn
      • Регрессионные графики в Seaborn с использованием regplot и lmplot
      • Seaborn residplot – Построение остатков линейной регрессии
      • Seaborn jointplot() – Создание совместных графиков в Seaborn
      • Seaborn displot – Распределенческие графики в Python
      • Seaborn ecdfplot – Эмпирические функции накопленного распределения
      • Seaborn rugplot – Визуализация маргинальных распределений
      • Seaborn kdeplot – Создание графиков оценки плотности ядра
      • Seaborn histplot – Создание Гистограмм в Seaborn
      • Seaborn catplot – Визуализация категориальных данных в Python
      • Средняя тенденция для категориальных данных в Seaborn Pointplot
      • Seaborn stripplot: Jitter Plots для распределений категориальных данных
      • Seaborn Countplot – Подсчет категориальных данных в Python
      • Seaborn swarmplot: Bee Swarm Plots для распределения категориальных данных
      • Скрипичные графики Seaborn в Python: Полное руководство
      • Настройка расположения легенд Seaborn, меток, текста и т.д.
      • Тепловая карта Seaborn: Полное руководство
      • Создание многосекционных сеток в Seaborn с помощью FacetGrid
      • Удаление рамки в Seaborn: Как работать с рамкой
      • Заголовки и метки осей в Seaborn: добавление и настройка
      • Как установить Seaborn в Python (Исправление: no module named seaborn)
      • Seaborn relplot – Создание точечных и линейных графиков
      • Полное руководство по созданию точечных диаграмм (scatter plots) в Python с использованием Seaborn
    • Matplotlib
      • Режим Retina в Matplotlib: Улучшение Качества Графиков
      • Как построить функцию в Python с использованием Matplotlib
      • Как создать 3D-диаграммы рассеяния в Matplotlib
      • Как изменить размер шрифта в графике Matplotlib
      • Установка размера маркера в точечных диаграммах Matplotlib
      • Как изменить размер графика и фигуры в Matplotlib
      • Как добавить названия в Matplotlib: Заголовок, Подзаголовок, Названия Осей
      • Pandas Scatter Plot: Как создать диаграмму рассеяния в Pandas
      • Построение графиков в Python с помощью Matplotlib
      • Диаграммы рассеяния Matplotlib – Все, что вам нужно знать
      • Диаграммы с столбцами в Matplotlib – Узнайте все, что вам нужно знать
      • Линейные диаграммы Matplotlib – Всё, что вам нужно знать
      • Построение гистограммы в Python с Matplotlib и Pandas
  • Алгоритмы
    • Алгоритм поиска в ширину (BFS) в Python
    • Алгоритм поиска в глубину (DFS) на Python
  • AI создает хедж-фонд для анализа акций на Python
Powered by GitBook
On this page
  • Что такое словари Python?
  • Как словари связаны с наукой о данных?
  • Работа со словарями Python
  • Методы словаря Python
  • Перебор словарей Python
  • Упорядочены ли словари Python?
  • Упражнение
  • Заключение и резюме
  • Дополнительные ресурсы
  1. Python
  2. Python Dictionaries

Полный обзор словарей в Python

PreviousПоиск дубликатов в списке PythonNextPython: Добавление пары Ключ:Значение в Словарь

Last updated 1 year ago

Python словари - это невероятно полезный тип данных, который позволяет вам хранить данные в парах ключ:значение. В этом уроке вы узнаете все, что вам нужно знать для начала работы с Python словарями, включая:

  • Основы создания словарей для хранения и доступа к данным

  • Лучшие случаи использования словарей

  • Добавление и удаление данных в словарях

  • Как применять функции и методы к словарям

Оглавление

Что такое словари Python?

Python словари — это контейнерные типы данных, как и списки в Python. Словари используют сопоставление ключ-значение, позволяя извлекать значение, ища соответствующий ключ. Они очень похожи на то, что в других языках программирования называется ассоциативными массивами. Это потому, что это массив данных, который ассоциируется с чем-то другим — в данном случае, с ключом.

В отличие от списков Python, которые являются последовательными типами данных, словари Python работают немного иначе. Поскольку списки последовательны, мы можем получить доступ к элементам на основе их позиции. Например, чтобы получить доступ к конкретному элементу в списке Python, мы можем просто обратиться к его индексу:

# Получение второго элемента в списке Python
names = ['Nik', 'Kate', 'Evan', 'Kyra']
second_name = names[1]  # Индексация в Python начинается с 0, поэтому второй элемент имеет индекс 1
print(second_name)

# Возвращает: Kate

Поскольку словари Python не являются последовательным типом данных, мы не можем просто получить доступ, скажем, к первому элементу. Для доступа к определенному значению в словаре Python мы используем ключ в словаре для доступа к значению.

В Python словаре может быть несколько ключей. Эти ключи должны быть:

  • Уникальный – заданный ключ может существовать только один раз

  • Неизменяемый – это значит, что ключи должны быть таких типов данных, которые нельзя изменить, например, строки

Думайте о словарях Python как о обычных словарях. Вы можете найти значение слова (т.е. ключ) и оно даст вам соответствующее определение (т.е. его значение).

Создание словаря Python

Давайте рассмотрим, как можно создать словарь в Python. Для начала создадим пустой словарь. У нас есть два основных способа сделать это:

# Создание словаря в Python
dictionary1 = {}       # Пустой словарь, созданный с использованием фигурных скобок
dictionary2 = dict()   # Пустой словарь, созданный с использованием функции dict()

Мы можем проверить тип этих словарей, используя встроенную функцию

# Проверка типов словарей в Python
print(type(dictionary1))  # Проверяем тип dictionary1
print(type(dictionary2))  # Проверяем тип dictionary2

# Возвращает:
# <class 'dict'>
# <class 'dict'>

Аналогично, мы можем загрузить заполненный словарь напрямую. Давайте посмотрим, как это выглядит на примере загрузки словаря с атрибутами человека:

# Создание примерного словаря в Python
nik = {
    'age': 33,  # Возраст
    'location': 'Toronto',  # Местоположение
    'company': 'bemind.gitbook.io',  # Компания
    'hobbies': ['Python', 'Long walks on the beach', 'Travel']  # Хобби
}

Здесь мы видим, что смогли встроить несколько разных элементов в качестве значений. Например, у нас есть целое число (представляющее возраст), строки (представляющие, скажем, местоположение) и даже списки!

Вы не обязаны писать это на разных строках, но так легче читать. Мы могли бы сделать то же самое, просто написав:

# Создание примерного словаря в Python
nik = {
    'age': 33,  # Возраст
    'location': 'Toronto',  # Местоположение
    'company': 'bemind.gitbook.io',  # Компания
    'hobbies': ['Python', 'Long walks on the beach', 'Travel']  # Хобби
}

Теперь, когда у вас есть хорошее понимание того, как создавать словари в Python, давайте взглянем на то, как их использовать.

Как словари связаны с наукой о данных?

На этом этапе вы можете задаться вопросом, как связаны словари с наукой о данных? Когда мы получаем данные из интернета, они часто приходят в формате, известном как JSON (JavaScript Object Notation). Этот формат очень похож на формат словарей в Python.

Знание работы с Python-словарями позволяет легко загружать данные из интернета и манипулировать ими. Этот формат невероятно распространен и предоставляет значительно большую гибкость в доступе к данным из различных источников.

Работа со словарями Python

Создание словарей в Python – это одно, но нужно также уметь работать с ними. В этом разделе вы научитесь различным способам доступа к элементам словаря, изменению элементов, а также добавлению и удалению элементов. Существуют разные способы достижения всего этого, но вы изучите самые безопасные и распространенные методы.

Доступ к элементам в словарях Python

Существуют два основных способа доступа к элементам внутри словаря. Можно использовать квадратные скобки, [], аналогично обращению к элементу списка по его индексу. Также можно использовать метод .get()

Давайте посмотрим, как мы можем использовать квадратные скобки для доступа к элементу.

# Доступ к элементам словаря с помощью квадратных скобок
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}
print(info['name'])  # Получаем значение по ключу 'name'

# Возвращает: Nik

Это было легко! Одним из недостатков использования метода доступа через квадратные скобки является то, что он плохо работает с несуществующими элементами.

Попробуйте запустить приведенный ниже код для доступа к элементу, который не существует, например, 'hobbies', чтобы увидеть, что произойдет:

Мы видим, что при попытке доступа к несуществующему элементу выбрасывается KeyError. Это указывает на то, что ключ не существует. Хуже всего то, что это фактически приводит к сбою нашей программы (если мы явно не обрабатываем эту ошибку).

Один из способов обойти это - использовать метод .get(). Метод .get() просто вернет значение None, когда ключ не существует.

Метод работает путем применения его к словарю и передачи ключа, значение которого мы хотим вернуть. Давайте посмотрим, как мы можем использовать это для возврата значения для 'name'

# Доступ к элементам словаря с помощью метода get
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}
print(info.get('name'))  # Получаем значение по ключу 'name' с помощью метода get

# Возвращает: Nik

Одно из преимуществ использования метода .get() заключается в том, что мы можем передать значение по умолчанию, которое мы хотим получить, если ключ не существует. Например, если у нас должен был быть ключ с именем 'hobbies', содержащий список различных увлечений, мы можем попросить Python вернуть пустой список вместо None.

Посмотрите, сможете ли вы написать код ниже, чтобы это произошло. Решение доступно по нажатию переключателя:

Добавление элементов в словари Python

Добавление элементов в словарь Python невероятно просто! Мы можем просто напрямую присвоить паре key:value словарь.

Давайте посмотрим, как это выглядит. Мы захотим добавить пункт о хобби в наш словарь.

# Добавление элементов в словарь Python
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}
info['hobbies'] = ['Coding', 'Long Walks on the Beach']  # Добавляем новый ключ 'hobbies' и его значение

print(info)
# Возвращает: {'name': 'Nik', 'age': 33, 'location': 'Toronto', 'hobbies': ['Coding', 'Long Walks on the Beach']}

Python также предоставляет несколько способов объединения двух словарей. Это может быть чрезвычайно полезно, если данные были собраны отдельно и вы не хотите вручную обновлять элементы одного словаря элементами из другого.

Для этого можно использовать метод .update(). Аналогично, в Python 3.8+ можно использовать оператор |. Оба метода работают одинаково: словарь справа будет объединен со словарем слева. Любые новые пары "ключ-значение" будут добавлены, а существующие ключи в левом словаре будут обновлены значениями из правого.

# Объединение двух словарей в Python
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}
more_info = {'company': 'datagy.io', 'location': 'Toronto, ON'}

info.update(more_info)  # Объединяем словари (существующие ключи перезаписываются значениями из more_info)

print(info)
# Возвращает: {'name': 'Nik', 'age': 33, 'location': 'Toronto, ON', 'company': 'datagy.io'}

Мы видим, что новые элементы из словаря more_info были добавлены, а существующие элементы были обновлены. Имейте это в виду при обновлении информации!

Изменение существующих элементов словаря Python

Изменение существующих элементов работает так же, как добавление новых! Мы можем просто напрямую присвоить значение существующему ключу и обновить его значение. Дополнительное преимущество в том, что если элемент не существует, то добавляется новый.

Давайте рассмотрим добавление изменения нашего ключа 'location' в нашем словаре:

# Изменение элементов в словаре Python
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}
info['location'] = 'Toronto, ON'  # Изменяем значение по ключу 'location'

print(info)

# Возвращает: {'name': 'Nik', 'age': 33, 'location': 'Toronto, ON'}

Нет ничего сложного в этом! Давайте посмотрим, как удалять элементы из словаря в Python.

Удаление элементов из словарей в Python

Подобно спискам, Python предоставляет несколько способов удаления элементов из словарей. Первый подход, который мы рассмотрим, — использование ключевого слова del. Это ключевое слово принимает элемент словаря и удаляет его из словаря.

Давайте посмотрим, как мы можем использовать ключевое слово для удаления элемента:

# Удаление элемента из словаря с помощью del
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}
del info['age']  # Удаляем элемент с ключом 'age'

print(info)

# Возвращает: {'name': 'Nik', 'location': 'Toronto'}

Мы также можем использовать метод .pop() в Python, чтобы удалить элемент из словаря. Преимущество этого подхода в том, что он возвращает значение до удаления пары ключ-значение. Давайте посмотрим, как это выглядит:

# Использование метода .pop() для удаления элемента из словаря
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}
age = info.pop('age')  # Удаляем элемент с ключом 'age' и возвращаем его значение

print(age)  # Выводим удаленное значение 'age'
print(info)  # Выводим обновленный словарь без удаленного элемента

# Возвращает: 
# 33
# {'name': 'Nik', 'location': 'Toronto'}

Оба этих метода требуют внимательности, чтобы не удалять несуществующие ключи. Оба этих метода вернут KeyError, если мы попытаемся удалить несуществующий ключ. Давайте это подтвердим:

# Попытка удалить ключ, которого не существует
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}

# Пытаемся удалить ключ 'hobbies', которого нет в словаре
# В результате возникает исключение KeyError, так как ключ 'hobbies' отсутствует в словаре
age = info.pop('hobbies')

# Вызывает: KeyError: 'hobbies'

Метод .pop() позволяет нам задать значение по умолчанию, чтобы программа не завершалась с ошибкой, если ключ не существует. Это позволяет нам безопаснее запускать программу.

Давайте посмотрим, как это работает:

# Безопасное использование метода .pop() с заданным значением по умолчанию
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}

# Пытаемся удалить ключ 'hobbies', если он есть в словаре. Если ключа нет, возвращается значение по умолчанию - пустой список.
age = info.pop('hobbies', [])

print(age)

# Возвращает: []

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

Методы словаря Python

В Python используется множество методов для работы со словарями – некоторые из них вы уже знаете! В этом разделе вы познакомитесь с новыми методами, которые помогут вам работать с ключами и значениями словарей.

Доступ к элементам словаря с помощью .items()

Мы можем использовать метод .items(), чтобы легко получить все элементы в словаре. Применение этого метода возвращает объект, похожий на список, содержащий кортежи с ключом и значением каждого элемента словаря.

Это может быть невероятно полезным, если вы хотите обойти ключи и значения. Давайте посмотрим, как это выглядит:

# Получение элементов словаря с помощью метода .items()
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}

# Метод .items() возвращает представление словаря в виде списка кортежей (ключ, значение)
print(info.items())

# Возвращает: dict_items([('name', 'Nik'), ('age', 33), ('location', 'Toronto')])

Мы можем перебирать объект dict_items, чтобы получить доступ как к ключам, так и к значениям.

Доступ к ключам словаря с помощью .keys()

Мы можем легко получить доступ ко всем ключам в словаре, используя метод .keys(). Он возвращает объект, похожий на список, который содержит все ключи.

Давайте возьмем наш предыдущий словарь и применим метод .keys()

# Получение всех ключей словаря с помощью метода .keys()
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}

# Метод .keys() возвращает представление всех ключей словаря
print(info.keys())

# Возвращает: dict_keys(['name', 'age', 'location'])

Доступ к значениям словаря с помощью .values()

Подобно методу .keys(), мы можем получить доступ ко всем значениям в словаре Python с помощью метода .items(). Этот метод также возвращает объект, похожий на список, который содержит значения всех ключей в словаре.

Давайте применим метод .items() к нашему словарю:

# Получение всех значений словаря с помощью метода .values()
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}

# Метод .values() возвращает представление всех значений словаря
print(info.values())

# Возвращает: dict_values(['Nik', 33, 'Toronto'])

Проверка членства в словарях Python

Для проверки наличия ключа в словаре Python удобно использовать ключевое слово in. Давайте посмотрим, как можно проверить, существует ли ключ в словаре, с помощью метода .keys()

# Проверка наличия ключа в словаре
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}

if 'name' in info.keys():  # Проверяем, существует ли ключ 'name' в словаре
    print('Exists!')  # Если ключ существует, выводим 'Exists!'
else:
    print("Doesn't exist!")  # Если ключ не существует, выводим "Doesn't exist!"

# Возвращает: Exists!

На самом деле мы можем упростить этот процесс, не используя метод .keys(). По умолчанию Python будет проверять членство в ключах словаря. Из-за этого мы можем даже опустить этот метод из нашей проверки членства:

# Проверка наличия ключа в словаре
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}

if 'name' in info:  # Проверяем, существует ли ключ 'name' в словаре
    print('Exists!')  # Если ключ существует, выводим 'Exists!'
else:
    print("Doesn't exist!")  # Если ключ не существует, выводим "Doesn't exist!"

# Возвращает: Exists!

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

Перебор словарей Python

Теперь, когда у вас есть хорошее понимание того, как получить доступ к элементам, ключам и значениям в словарях Python, давайте посмотрим, как можно итеративно обрабатывать словари Python.

Так как методы .items(), .keys(), и .values() возвращают объекты, похожие на списки, мы можем напрямую перебирать их. Давайте сначала посмотрим, как перебирать ключи:

# Перебор всех ключей в словаре
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}

for key in info.keys():  # Перебираем все ключи в словаре
    print(key)

# Возвращает: 
# name
# age
# location

Этот подход работает так же для .items().

Но что, если вы хотите перебрать ключи и значения одновременно? Для этого можно использовать так называемую распаковку. Мы можем перебирать возвращаемое значение метода .items() и распаковывать ключ и значение из возвращаемого кортежа.

Давайте посмотрим, как это выглядит:

# Перебор и ключей, и значений в словаре
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto'}

for key, value in info.items():  # Перебираем пары ключ-значение в словаре
    print('Key = ', key, ', Value = ', value)

# Возвращает: 
# Key =  name , Value =  Nik
# Key =  age , Value =  33
# Key =  location , Value =  Toronto

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

Упорядочены ли словари Python?

Ответ на вопрос о том, упорядочены ли словари в Python, не является простым да или нет. До версии 3.6 словари в Python были неупорядоченными. Начиная с версии 3.6 (и официально с версии 3.7), словари в Python стали упорядоченными.

Теперь словари Python упорядочены на основе порядка вставки. Это обеспечивает более быстрый доступ.

Упражнение

Ниже вы найдете несколько упражнений, чтобы проверить ваше понимание словарей в Python. Используйте предоставленное рабочее пространство кода, чтобы протестировать ваши решения. Вы можете переключать разделы, чтобы проверить решения.

Создайте словарь, подобный приведенному ниже, и выполните следующие упражнения:

# Загрузка словаря в редактор кода ниже
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto', 'company': 'bemind.gitbook.io'}

Выведите все значения словаря с использованием цикла for

for value in info.values():
    print(value)
# Создание словаря, аналогичного приведенному ниже
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto', 'company': 'bemind.gitbook.io'}

# Вывод всех значений словаря с помощью цикла for
for value in info.values():  # Перебираем все значения в словаре
    print(value)  # Выводим каждое значение

# Вывод:
# Nik
# 33
# Toronto
# bemind.gitbook.io

Добавить новый ключ, содержащий список значений

info['Favourite Snacks'] = ['Popcorn', 'Cookies']
# Создание словаря, аналогичного приведенному ниже
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto', 'company': 'bemind.gitbook.io'}

# Добавление нового ключа, содержащего список значений
info['Favourite Snacks'] = ['Popcorn', 'Cookies']

# Результат добавления нового ключа
# {'name': 'Nik', 'age': 33, 'location': 'Toronto', 'company': 'bemind.gitbook.io', 'Favourite Snacks': ['Popcorn', 'Cookies']}

Обновите ключ местоположения на «Ванкувер».

info['location'] = 'Vancouver'
# Создание словаря, аналогичного приведенному ниже
info = {'name': 'Nik', 'age': 33, 'location': 'Toronto', 'company': 'bemind.gitbook.io'}

# Обновление значения ключа 'location' на 'Ванкувер'
info['location'] = 'Ванкувер'

# Результат обновления ключа 'location'
# {'name': 'Nik', 'age': 33, 'location': 'Ванкувер', 'company': 'bemind.gitbook.io'}

Заключение и резюме

Фух! Вы дошли до конца руководства! Было много информации о словарях Python, и вы узнали о них множество новых вещей!

Краткий обзор всего, что вы узнали о словарях Python

  • К элементам можно обращаться с помощью методов .items(), .keys(), и .values().

  • Метод .pop() позволяет передавать значение по умолчанию, что позволяет программе работать безопасно, если ключ не существует.

  • Мы можем удалять элементы с помощью del или .pop().

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

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

  • Вы можете создать словари с помощью функции dict() или фигурных скобок {}.

  • Значения могут быть любого типа и могут дублироваться.

  • Ключи должны быть неизменяемыми и уникальными.

  • Словари — это ассоциативный массив значений, содержащий пары ключ

Дополнительные ресурсы

Посмотрите учебные пособия ниже для получения дополнительных ресурсов:

  • Python: сортировка словаря по значениям

  • Слияние словарей Python – объединение словарей (7 способов)

  • Python: Pretty Print a Dict (словарь) – 4 способа

  • Python: получить ключ словаря с максимальным значением (4 способа)

Официальная документация по словарям Python
Что такое словари Python?
Как словари связаны с наукой о данных?
Работа со словарями Python
Доступ к элементам в словарях Python
Добавление элементов в словари Python
Изменение существующих элементов словаря Python
Удаление элементов из словарей в Python
Методы словаря Python
Доступ к элементам словаря с помощью .items()
Доступ к словарю ключей с помощью .keys()
Доступ к словарю значений с помощью .values()
Проверка членства в словарях Python
Перебор словарей Python
Упорядочены ли словари Python?
Упражнение
Заключение и резюме
Дополнительные ресурсы