NeiroNx
@NeiroNx
Программист

Какая из процедур оптимальнее?

Есть лист словарей в 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)


Смысл получть отфильтрованный массив.
На данном этапе нет целевого набора данных, может кто-то сталкивался с подобной задачей.
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы