@Taylor_Superhero

Как сравнить значения словаря в Питон 3.5?

У меня есть массив словарей. После пользовательского ввода формируется новый словарь, который нужно сравнить со всеми словарями массива и вернуть только те словари, которые подошли под запрос. Подскажите пожалуйста, как это эффективно провернуть? При этом возможно, что в пользовательском словаре для поиска будут ключи, которых нет в некоторых словарях из массива, а так же ключей может быть меньше. В примере я должен получить третий словарь.
def sample():
	obj = [{
		'a': 1,
		'b': 2,
		'c': 3
	},
	{
		'a': 4,
		'b': 23

	},
	{
		'a': 1,
		'b': 3,
		'c': 4
	}]
	return obj


def search():
	custom = {
		'a': 1,
		'b': 3
	}
  • Вопрос задан
  • 4320 просмотров
Решения вопроса 1
@Bojczuk
result = []
for i in obj:
    if all(item in i.items() for item in custom.items()):
        result.append(i)
return result
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@lega
Если данных много, можете сделать инвертированный индекс, ( напр. ключ ('a', 1) будет содержать список всех словарей где есть {'a': 1}), таким образом нужно будет перебирать не все данные, а только часть. Будет работать гораздо быстрее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы