Словари Python сопоставляют ключи со значениями и сохраняют их в коллекции или массиве. Словарь — это ассоциативный массив, в котором произвольные ключи сопоставляются со значениями. Словари — это итерации, которые поддерживают доступ к элементам с использованием целочисленных индексов, словарей индексов ключей. Ключами словаря может быть любой объект с функциями __hash__() и __eq__().
В Python 3.6 и более поздних версиях ключи и значения словаря повторяются в том же порядке, в котором они были созданы. Когда дело доходит до итерации по словарю, язык Python предоставляет вам несколько замечательных методов и функций, которые мы рассмотрим в этом посте.
Различные способы перебора словаря
В основном существует четыре способа перебора словаря в Python:
- Итерация через .items()
- Перебор .keys()
- Перебор .values()
- Итерация по ключам напрямую.
Давайте обсудим все подходы один за другим.
Итерация словаря через .items()
Метод items() возвращает объект представления, который отображает список пар словаря (ключ, значение).
Синтаксис
|
1 |
dictionary.items() |
Пример:
|
1 2 3 4 5 6 |
data = { 'name': 'Obama', 'position': 'Former President' } print(data.items()) |
Выход:
|
1 |
dict_items([('name', 'Obama'),('position', 'Former President')]) |
Представления можно обходить, чтобы получить соответствующие данные, поэтому вы можете перебирать словарь в Python, используя объект представления, возвращаемый функцией .items().
Давайте повторим объект dict_items() с помощью цикла for.
|
1 2 3 4 5 6 7 8 9 |
data = { 'name': 'Obama', 'position': 'Former President' } data_items = data.items() for item in data_items: print(item) |
Выход:
|
1 |
('name', 'Obama')('position', 'Former President') |
Объект представления, возвращаемый методом .items(), выдает пары ключ-значение по одной за раз и позволяет нам перебирать словарь в Python, но таким образом, что вы можете получить доступ к ключам и значениям одновременно.
Если вы посмотрите на отдельные элементы, выдаваемые методом .items(), вы заметите, что они являются объектами-кортежами. Теперь вы можете распаковать кортеж, чтобы просмотреть ключи и значения словаря.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 |
data = { 'name': 'Obama', 'position': 'Former President' } data_items = data.items() for key, value in data_items: print(key, '=>', value) |
Выход:
|
1 2 |
name => Obama position => Former President |
Каждый раз, когда выполняется цикл for, переменная key будет хранить ключ, а переменная value будет хранить значение элемента, который был обработан по одному за раз. При таком подходе у вас будет больше контроля над элементами словаря, и вы сможете обрабатывать ключи и значения питоническим способом.
Давайте перейдем ко второму способу перебора словаря Python.
Итерация по .keys()
Метод keys() возвращает объект представления, который отображает список всех ключей словаря. Если вам просто нужно работать с ключами словаря, вы можете использовать метод dict.keys(), который возвращает новый объект представления, содержащий ключи.
Синтаксис
|
1 |
dictionary.keys() |
Пример:
|
1 2 3 4 5 6 7 |
data = { 'name': 'Obama', 'position': 'Former President' } data_keys = data.keys() print(data_keys) |
Выход:
|
1 |
dict_keys(['name', 'position']) |
Объект data_keys, возвращаемый функцией .keys(), обеспечивает динамическое представление ключей словаря данных. Представление data_keys можно использовать для перебора ключей данных. Чтобы выполнить итерацию по словарю в Python с помощью .keys(), вам просто нужно вызвать .keys() в заголовке цикла for.
|
1 2 3 4 5 6 7 8 9 |
data = { 'name': 'Obama', 'position': 'Former President' } data_keys = data.keys() for key in data_keys: print(key) |
Выход:
|
1 2 |
name position |
Когда вы вызываете .keys() для словаря данных, вы получаете представление ключей. Python знает, что объекты представления являются итераторами, поэтому он запускает цикл, и вы можете обрабатывать ключи данных.
Теперь, что насчет значений, как мы можем получить значения словаря? Ответ на этот вопрос: оператор индексации( [ ] ). Вы можете получить доступ к значениям словаря с помощью оператора индексации.
См. приведенный ниже код.
|
1 2 3 4 5 6 7 8 9 |
data = { 'name': 'Obama', 'position': 'Former President' } data_keys = data.keys() for key in data_keys: print(key, '=>', data[key]) |
Выход:
|
1 2 |
name => Obama position => Former President |
Таким образом, вы одновременно получаете доступ к ключам (key) и значениям (data[key]) словаря данных и можете выполнять над ними любые операции.
Перебор по .values() в словаре Python
Метод values() возвращает объект представления, который отображает список всех значений в словаре. До сих пор мы видели методы dict.items() и dict.keys() для итерации словаря. Следующий метод предназначен для повторения values() словаря.
Синтаксис
|
1 |
dictionary.values() |
Пример:
|
1 2 3 4 5 6 7 |
data = { 'name': 'Obama', 'position': 'Former President' } data_values = data.values() print(data_values) |
Выход:
|
1 |
dict_values(['Obama', 'Former President']) |
Здесь объект data_values, возвращаемый функцией .values(), обеспечивает динамическое представление ключей словаря данных. Представление data_values можно использовать для перебора значений данных. Чтобы перебрать словарь в Python с помощью .keys(), вам просто нужно вызвать .values() в заголовке цикла for.
|
1 2 3 4 5 6 7 8 9 |
data = { 'name': 'Obama', 'position': 'Former President' } data_values = data.values() for value in data_values: print(value) |
Выход:
|
1 2 |
Obama Former President |
Используя метод .values(), вы получите доступ только к значениям данных, не имея дело с ключами.
Обход через direct клавиши и []
Если вы не хотите использовать методы dict.keys() и dict.values() и по-прежнему хотите напрямую перебирать ключи и значения в Python, мы все равно можем это сделать.
Словари Python являются объектами сопоставления. Это означает, что они наследуют некоторые специальные методы, которые Python использует внутри для вычисления некоторых операций. Эти методы названы с использованием соглашения об именах с добавлением двойного подчеркивания в начале и в конце имени функции.
Для сопоставлений (например, словарей) __iter__() должен перебирать ключи. Это означает, что если вы поместите словарь непосредственно в цикл for, Python автоматически вызовет .__iter__() для этого словаря, и вы получите итератор по его ключам. Затем мы использовали обычные способы получения значения словаря с помощью оператора индексации.
См. следующий код.
|
1 2 3 4 5 6 7 |
data = { 'name': 'Obama', 'position': 'Former President' } for key in data: print(key, '=>', data[key]) |
Выход:
|
1 2 |
name => Obama position => Former President |
Приведенный выше код позволяет нам одновременно получить доступ к ключам (key) и значениям (data[key]) словаря данных. При таком подходе вы можете выполнять любые операции как с ключами, так и со значениями.
Это, безусловно, один из самых простых способов перебора словаря в Python. Просто поместите его прямо в цикл for, и все готово!
Оператор in для проверки элемента в словаре
Вы можете использовать тесты поддержки членства (в операторе), который является важным оператором, если вы пытаетесь узнать, находится ли конкретный элемент в словаре или нет.
|
1 2 3 4 5 6 7 8 9 10 |
data = { 'name': 'Obama', 'position': 'Former President' } print('name' in data.keys()) print('Obama' in data.values()) print('age' in data.keys()) print(73 in data.values()) |
Выход:
|
1 2 3 4 |
True True False False |
Тест на членство с использованием оператора in возвращает True, если ключ (или значение, или элемент) присутствует в словаре, который вы тестируете, и возвращает False в противном случае.
Этот тест на членство позволяет нам не перебирать словарь в Python, если вы просто хотите знать, присутствует ли определенный ключ (или значение, или элемент) в словаре или нет.
Заключение

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