Есть лист словарей в python 2.7
#несколько тысяч объектов с десятком параметров
data = [{'a': 1, 'b': 2},{'a': 2, 'b': 2},{'a': 1, 'b': 100},{'a': 1, 'b': 22},{'a': 3, 'b': 2}]
#Искомые параметры
filtr = {'a': 1}
#Вариант 1
data = [ x for x in data if set(filtr.items()).issubset(set(x.items())) ]
#Вариант 2
data = [ x for x in data if set(x.items()).issuperset(set(filtr.items())) ]
#Вариант 3
data = list(filter(lambda x:set(filtr.items()).issubset(set(x.items())),data))
Какой из вариантов оптимальнее? Может лучше не через генератор списка?
new_data = []
while len(data)>0:
item = data.pop()
if set(filtr.items()).issubset(set(item.items())):
new_data.insert(0,item)
Смысл получть отфильтрованный массив.
На данном этапе нет целевого набора данных, может кто-то сталкивался с подобной задачей.