Поиск по сайту:

Программа Python для извлечения словарей с заданным ключом из списка словарей


Реализация Python структуры данных, более известной как ассоциативный массив, представляет собой словарь. Словарь состоит из группы пар ключ-значение. Каждая комбинация «ключ-значение» соответствует ключу и соответствующему ему значению.

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

Используемые методы

Ниже приведены различные методы выполнения этой задачи:

  • Использование понимания списка и функцииkeys()

  • Использование функций filter() и лямбда

  • Использование методаoperator.countOf()

Пример

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

Вход

inputList = [{'hello': 3, 'tutorialspoint': 6}, {'python': 9},
   {'users': 12, 'users': 15, 'hello': 18},
   {'users': 21}]
inputKey = 'users'      

Выход

The resultant list of dictionaries containing the 'users' key −
[{'users': 15, 'hello': 18}, {'users': 21}]

В приведенном выше списке входных словарей только словари {'users': 12, 'users': 15, 'hello': 18}, {'users': 21 содержат ключ ввода пользователи. Следовательно, эти словари извлекаются из входного списка.

Использование понимания списка и функцииkeys()

Если вы хотите создать новый список на основе значений существующего списка, понимание списка обеспечивает более короткий/лаконичный синтаксис.

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

Алгоритм (шаги)

Ниже приводится алгоритм/шаги, которым необходимо следовать для выполнения желаемой задачи.

  • Создайте переменную для хранения входного списка словарей.

  • Распечатайте входной список.

  • Создайте еще одну переменную для хранения входного ключа.

  • Пройдите по заданному списку словарей, используя понимание списка, и проверьте, присутствует ли ключ в ключах словаря, используя оператор in.

  • Если это правда, сохраните этот словарь в списке.

  • Распечатайте результирующий список словарей, содержащих входной ключ.

Пример

Следующая программа возвращает список словарей, содержащих входной ключ, из входного словаря, используя понимание списка и функциюkeys():

# input list of dictionaries
inputList = [{'hello': 3, 'tutorialspoint': 6}, {'python': 9},
   {'users': 12, 'users': 15, 'hello': 18},
   {'users': 21}]
# printing input list
print("Input List:\n", inputList)
# input key
inputKey = 'users'
# Traversing in the given input list and checking 
# whether the input Key exists in the list of dictionaries keys
resultantDict = [e for e in inputList if inputKey in list(e.keys())]
# printing resultant list of dictionaries containing input key
print("The Resultant list of dictionaries containing the 'users' key:\n", resultantDict)

Выход

Input List:
 [{'hello': 3, 'tutorialspoint': 6}, {'python': 9}, {'users': 15, 'hello': 18}, {'users': 21}]
The Resultant list of dictionaries containing the 'users' key:
 [{'users': 15, 'hello': 18}, {'users': 21}]

Использование функций filter() и лямбда

Функция filter() — фильтрует указанную последовательность с помощью функции, которая определяет, должен ли каждый элемент в последовательности быть истинным или ложным.

лямбда-функция

Лямбда-функция — это анонимная функция небольшого размера.

Лямбда-функция может иметь неограниченное/любое количество аргументов, но только одно выражение.

Синтаксис

lambda arguments : expression

Пример

Следующая программа возвращает список словарей, содержащих входной ключ из входного словаря, используя функции filter() и лямбда:

# input list of dictionaries
inputList = [{'hello': 3, 'tutorialspoint': 6}, {'python': 9},
   {'users': 12, 'users': 15, 'hello': 18},
   {'users': 21}]
# printing input list
print("Input List:\n", inputList)
# input key
inputKey = 'users'
# Filtering all the dictionaries with the given input key
resultantDict = list(
    filter(lambda sub: inputKey in list(sub.keys()), inputList))
# printing the resultant list of dictionaries containing input key
print("Resultant list of dictionaries containing 'users' key:\n", resultantDict)

Выход

При выполнении вышеуказанная программа сгенерирует следующий вывод:

Input List:
 [{'hello': 3, 'tutorialspoint': 6}, {'python': 9}, {'users': 15, 'hello': 18}, {'users': 21}]
Resultant list of dictionaries containing 'users' key:
 [{'users': 15, 'hello': 18}, {'users': 21}]

Использование методаoperator.countOf()

Функция countOf() модуля оператора возвращает количество элементов в a, равных b.

Синтаксис

operator.countOf(a, b)

Параметры

  • a — список или строка или любой другой тип данных.

  • b — значение, для которого мы должны подсчитать количество вхождений в «a»

Пример

Следующая программа возвращает список словарей, содержащих входной ключ, из входного словаря, используя понимание списка и функциюkeys():

import operator as op
# input list of dictionaries
inputList = [{'hello': 3, 'tutorialspoint': 6}, {'python': 9},
   {'users': 12, 'users': 15, 'hello': 18},
   {'users': 21}]
# printing input list
print("Input List:\n", inputList)
# input key
inputKey = 'users'
# Traversing in the given input list and checking
# whether the input Key exists in the list of dictionaries keys
resultantDict = [e for e in inputList if op.countOf(
    list(e.keys()), inputKey) > 0]
# printing resultant list of dictionaries containing input key
print("The Resultant list of dictionaries containing the 'users' key:\n", resultantDict)

Выход

При выполнении вышеуказанная программа сгенерирует следующий вывод:

Input List:
 [{'hello': 3, 'tutorialspoint': 6}, {'python': 9}, {'users': 15, 'hello': 18}, {'users': 21}]
The Resultant list of dictionaries containing the 'users' key:
 [{'users': 15, 'hello': 18}, {'users': 21}]

Заключение

В этой статье мы узнали, как использовать три различных метода для извлечения словарей с определенным ключом из списка словарей. Новый метод освоен. Используйтеoperator.countOf() для подсчета элементов итерируемого объекта. Чтобы определить, существует элемент или нет, можно использовать новый подход вместо операторов «in» и «not in».

Статьи по данной тематике