Метод dict.items() в Python, список кортежей.
Преобразование словаря в список кортежей ключ-значение.
Синтаксис:
Параметры:
- dict — словарь
Возвращаемое значение:
- dict_items — новый список-представление вида (key, value)
Описание:
Метод dict.items() возвращает новый список-представление dict_items пар элементов словаря dict , такой как (key, value) Другими словами возвращает список кортежей вида (key, value) , состоящий из элементов словаря.
Список-представление dict_items , является динамичным объектом. Это значит, что все изменения в словаре сразу отражаются на этом представлении.
Дополнительно смотрите какие операции поддерживают списки-представления словарей dict
Как перевести словарь в список python
Словарь (dictionary) в языке Python хранит коллекцию элементов, где каждый элемент имеет уникальный ключ и ассоциированое с ним некоторое значение.
Определение словаря имеет следующий синтаксис:
В фигурных скобках через запятую определяется последовательность элементов, где для каждого элемента сначала указывается ключ и через двоеточие его значение.
В словаре users в качестве ключей используются числа, а в качестве значений — строки. То есть элемент с ключом 1 имеет значение «Tom», элемент с ключом 2 — значение «Bob» и т.д.
В словаре emails в качестве ключей используются строки — электронные адреса пользователей и в качестве значений тоже строки — имена пользователей.
Но необязательно ключи и строки должны быть однотипными. Они могу представлять разные типы:
Мы можем также вообще определить пустой словарь без элементов:
Преобразование списков и кортежей в словарь
Несмотря на то, что словарь и список — непохожие по структуре типы, но тем не менее существует возможности для отдельных видов списков преобразования их в словарь с помощью встроенной функции dict() . Для этого список должен хранить набор вложенных списков. Каждый вложенный список должен состоять из двух элементов — при конвертации в словарь первый элемент станет ключом, а второй — значением:
Подобным образом можно преобразовать в словарь двухмерные кортежи, которые в свою очередь содержать кортежи из двух элементов:
Получение и изменение элементов
Для обращения к элементам словаря после его названия в квадратных скобках указывается ключ элемента:
Например, получим и изменим элементы в словаре:
Если при установки значения элемента с таким ключом в словаре не окажется, то произойдет его добавление:
Но если мы попробуем получить значение с ключом, которого нет в словаре, то Python сгенерирует ошибку KeyError:
И чтобы предупредить эту ситуацию перед обращением к элементу мы можем проверять наличие ключа в словаре с помощью выражения ключ in словарь . Если ключ имеется в словаре, то данное выражение возвращает True:
Также для получения элементов можно использовать метод get , который имеет две формы:
get(key) : возвращает из словаря элемент с ключом key. Если элемента с таким ключом нет, то возвращает значение None
get(key, default) : возвращает из словаря элемент с ключом key. Если элемента с таким ключом нет, то возвращает значение по умолчанию default
Удаление
Для удаления элемента по ключу применяется оператор del :
Но стоит учитывать, что если подобного ключа не окажется в словаре, то будет выброшено исключение KeyError. Поэтому опять же перед удалением желательно проверять наличие элемента с данным ключом.
Другой способ удаления представляет метод pop() . Он имеет две формы:
pop(key) : удаляет элемент по ключу key и возвращает удаленный элемент. Если элемент с данным ключом отсутствует, то генерируется исключение KeyError
pop(key, default) : удаляет элемент по ключу key и возвращает удаленный элемент. Если элемент с данным ключом отсутствует, то возвращается значение default
Если необходимо удалить все элементы, то в этом случае можно воспользоваться методом clear() :
Копирование и объединение словарей
Метод copy() копирует содержимое словаря, возвращая новый словарь:
Метод update() объединяет два словаря:
При этом словарь users2 остается без изменений. Изменяется только словарь users, в который добавляются элементы другого словаря. Но если необходимо, чтобы оба исходных словаря были без изменений, а результатом объединения был какой-то третий словарь, то можно предварительно скопировать один словарь в другой:
Перебор словаря
Для перебора словаря можно воспользоваться циклом for:
При переборе элементов мы получаем ключ текущего элемента и по нему можем получить сам элемент.
Другой способ перебора элементов представляет использование метода items() :
Метод items() возвращает набор кортежей. Каждый кортеж содержит ключ и значение элемента, которые при переборе мы тут же можем получить в переменные key и value.
Также существуют отдельно возможности перебора ключей и перебора значений. Для перебора ключей мы можем вызвать у словаря метод keys() :
Правда, этот способ перебора не имеет смысла, так как и без вызова метода keys() мы можем перебрать ключи, как было показано выше.
Для перебора только значений мы можем вызвать у словаря метод values() :
Комплексные словари
Кроме простейших объектов типа чисел и строк словари также могут хранить и более сложные объекты — те же списки, кортежи или другие словари:
В данном случае значение каждого элемента словаря в свою очередь представляет отдельный словарь.
Для обращения к элементам вложенного словаря соответственно необходимо использовать два ключа:
Но если мы попробуем получить значение по ключу, который отсутствует в словаре, Python сгенерирует исключение KeyError:
Чтобы избежать ошибки, можно проверять наличие ключа в словаре:
Во всем остальном работа с комплексными и вложенными словарями аналогична работе с обычными словарями.
Python | Преобразовать словарь в список кортежей
Для данного словаря напишите программу на Python, чтобы преобразовать данный словарь в список кортежей.
Примеры:
Ниже приведены различные методы для преобразования словаря в список кортежей.
Метод № 1: Использование понимания списка
# Python код для преобразования словаря в список кортежей
# Преобразование в список кортежей
list = [(k, v) for k, v in dict .items()]
# Печать списка кортежей
Способ № 2: Использование items()
# Python код для преобразования словаря в список кортежей
# Преобразование в список кортежей
list = list ( dict .items())
# Печать списка кортежей
Способ № 3: Использование zip
# Python код для преобразования словаря в список кортежей
listt = zip ( dict .keys(), dict .values())
# Преобразование из zip-объекта в список объектов
listt = list (listt)
Метод № 4: Использование итерации
# Python код для преобразования словаря в список кортежей
# Инициализация пустого списка
Метод № 5: Использование collection
# Python код для преобразования словаря в список кортежей
list_of_tuple = collections.namedtuple( ‘List’ , ‘name value’ )
lists = list (list_of_tuple( * item) for item in dict .items())
[List(name=’for’, value=12), List(name=’Geek’, value=31), List(name=’Geeks’, value=10)]