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

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

Подробное руководство по использованию разных способов перебора содержимого словаря в Python

Введение

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

Использование метода keys

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

Имейте в виду, что начиная с Python 3 этот метод не возвращает список, а возвращает объект представления. Объект представления — это возвращаемое значение исходного объекта, изменения которого не влияют на исходный объект. Для внесения изменений и сохранения данных в измененном объекте представления необходимо присвоить его какой-либо переменной.

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

# В качестве словаря используем рейтинг популярности языков программирования TIOBE

tiobe_index = {
    "C": 17.38,
    "Java": 11.96,
    "Python": 11.72,
    "C++": 7.56,
    "C#": 3.95,
}
# Выведем на экран список ключей словаря и тип объекта возвращаемый выполнением метода keys

print(f"Key view: {tiobe_index.keys()}")
print(f"Type: {type(tiobe_index.keys())}")

Результат выполнения кода

Key view: dict_keys(['C', 'Java', 'Python', 'C++', 'C#'])
Type: <class 'dict_keys'>

Итерация словаря по ключу в цикле for с указанием индекса элемента

for k in tiobe_index.keys():
    print(f"{k}: {tiobe_index[k]}")

Результат выполнения кода

C: 17.38
Java: 11.96
Python: 11.72
C++: 7.56
C#: 3.95

При использовании ключевого слова in в цикле for словарь вызывает свой метод iter. Затем этот метод возвращает итератор, который используется для неявного просмотра ключей предоставленного словаря.

Использование метода value

Так же как и метод keys, метод value возвращает объект представления, но вместо итерации по ключу, он итератует по значениям:

# В качестве словаря используем рейтинг популярности языков программирования TIOBE

tiobe_index = {
    "C": 17.38,
    "Java": 11.96,
    "Python": 11.72,
    "C++": 7.56,
    "C#": 3.95,
}
# Выведем на экран список значений словаря и тип объекта возвращаемый выполнением метода value

print(f"Value view: {tiobe_index.values()}")
print(f"Type: {type(tiobe_index.values())}")

Результат выполнения кода

Value view: dict_values([17.38, 11.96, 11.72, 7.56, 3.95])
Type: class <'dict_values'>

Итерация словаря по значению в цикле for

for k in tiobe_index.values():
    print(f"{k}")

Результат выполнения кода

17.38
11.96
11.72
7.56
3.95

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

Использование метода items

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

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

# В качестве словаря используем рейтинг популярности языков программирования TIOBE

tiobe_index = {
    "C": 17.38,
    "Java": 11.96,
    "Python": 11.72,
    "C++": 7.56,
    "C#": 3.95,
}
# Выведем на экран список элементов словаря и тип объекта возвращаемый выполнением метода items

print(f"Items view: {tiobe_index.items()}")
print(f"Type: {type(tiobe_index.items())}")

Результат выполнения кода

Items view: dict_items([('C', 17.38), ('Java', 11.96), ('Python', 11.72), ('C++', 7.56), ('C#', 3.95)])
Type: <class 'dict_items'>

Итерация словаря по паре клюк:значение происходит следующим образом

for k, v in tiobe_index.items():
    print(f"key: {k}, value: {v}")

Результат выполнения кода

key: C, value: 17.38
key: Java, value: 11.96
key: Python, value: 11.72
key: C++, value: 7.56
key: C#, value: 3.95

Важно отметить, что в старых версиях Python, где items, keys и values возвращали копию данных из словаря, Python 3 возвращает объект представления.

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

Заключение

В этой статье мы рассмотрели различные способы итерации по словарю в Python используя методы keys(), values() и items().

Егор Егоров

Программирую на Python с 2017 года. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без непрерывного цикла обучения, спорта и чувства юмора.

Ссылка на мой github есть в шапке. Залетай.

Оцените автора
Егоров Егор
Добавить комментарий

  1. Дмитрий

    Спасибо за статью.
    Весьма познавательная.

    Удачи в вашем деле.

    Ответить
  2. Андрей

    Автор Молодец….статья интересная ….продолжай писать подобное )))

    Ответить
    1. Егор Егоров автор

      стараюсь)))

      Ответить