Программа 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».