4 способа перебора словаря в Python

Словари Python сопоставляют ключи со значениями и сохраняют их в коллекции или массиве. Словарь — это ассоциативный массив, в котором произвольные ключи сопоставляются со значениями. Словари — это итерации, которые поддерживают доступ к элементам с использованием целочисленных индексов, словарей индексов ключей. Ключами словаря может быть любой объект с функциями __hash__() и __eq__().

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

Различные способы перебора словаря

В основном существует четыре способа перебора словаря в Python:

  1. Итерация через .items()
  2. Перебор .keys()
  3. Перебор .values()
  4. Итерация по ключам напрямую.

Давайте обсудим все подходы один за другим.

Итерация словаря через .items()

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

Синтаксис

Пример:

Выход:

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

Давайте повторим объект dict_items() с помощью цикла for.

Выход:

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

Если вы посмотрите на отдельные элементы, выдаваемые методом .items(), вы заметите, что они являются объектами-кортежами. Теперь вы можете распаковать кортеж, чтобы просмотреть ключи и значения словаря.

См. следующий код.

Выход:

Каждый раз, когда выполняется цикл for, переменная key будет хранить ключ, а переменная value будет хранить значение элемента, который был обработан по одному за раз. При таком подходе у вас будет больше контроля над элементами словаря, и вы сможете обрабатывать ключи и значения питоническим способом.

Давайте перейдем ко второму способу перебора словаря Python.

Итерация по .keys()

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

Синтаксис

Пример:

Выход:

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

Выход:

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

Теперь, что насчет значений, как мы можем получить значения словаря? Ответ на этот вопрос: оператор индексации( [ ] ). Вы можете получить доступ к значениям словаря с помощью оператора индексации.

См. приведенный ниже код.

Выход:

Таким образом, вы одновременно получаете доступ к ключам (key) и значениям (data[key]) словаря данных и можете выполнять над ними любые операции.

Перебор по .values() в словаре Python

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

Синтаксис

Пример:

Выход:

Здесь объект data_values, возвращаемый функцией .values(), обеспечивает динамическое представление ключей словаря данных. Представление data_values можно использовать для перебора значений данных. Чтобы перебрать словарь в Python с помощью .keys(), вам просто нужно вызвать .values() в заголовке цикла for.

Выход:

Используя метод .values(), вы получите доступ только к значениям данных, не имея дело с ключами.

Обход через direct клавиши и []

Если вы не хотите использовать методы dict.keys() и dict.values() и по-прежнему хотите напрямую перебирать ключи и значения в Python, мы все равно можем это сделать.

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

Для сопоставлений (например, словарей) __iter__() должен перебирать ключи. Это означает, что если вы поместите словарь непосредственно в цикл for, Python автоматически вызовет .__iter__() для этого словаря, и вы получите итератор по его ключам. Затем мы использовали обычные способы получения значения словаря с помощью оператора индексации.

См. следующий код.

Выход:

Приведенный выше код позволяет нам одновременно получить доступ к ключам (key) и значениям (data[key]) словаря данных. При таком подходе вы можете выполнять любые операции как с ключами, так и со значениями.

Это, безусловно, один из самых простых способов перебора словаря в Python. Просто поместите его прямо в цикл for, и все готово!

Оператор in для проверки элемента в словаре

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

Выход:

Тест на членство с использованием оператора in возвращает True, если ключ (или значение, или элемент) присутствует в словаре, который вы тестируете, и возвращает False в противном случае.

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

Заключение

Различные способы итерации словаря в Python

Теперь вы знаете, как перебирать словарь в Python, используя различные подходы. Это поможет нам более эффективно использовать итерации и обход словаря в будущем.

Оцените статью

Автор статей и разработчик, делюсь знаниями.

Программирование на Python