filter
работает на итерации . В Python 2.7 он вернет список, в то время как в Python 3.x у вас есть итерация, которая может быть заключена в list
.
Так, например, вам не нужен цикл for
в вашем выражении filter
:
lst = [{'origin_location':'original', 'service':'amazon'},
{'origin_location':'duplicate', 'service':'flipkart'}]
result = list(filter(lambda x: x['service'] == 'flipkart', lst))
print("Result= ", result)
# Result= [{'origin_location': 'duplicate', 'service': 'flipkart'}]
Функция lambda
применяется к каждому элементу в lst
; если он возвращает False
, элемент «отфильтрован».
Обратите внимание, что логика может быть реализована более эффективно через понимание списка:
result = [i for i in lst if i['service'] == 'flipkart']
Если вам нужно повторить лень filter
, используйте вместо этого выражение генератора (...)
.