Если я правильно понимаю, вы просто хотите отфильтровать конечный результат здесь?Если вы этого еще не сделали, преобразуйте строку json в объект python
import json
resp = json.loads(fql_resp)
data = resp['data']
loads
означает load string , что вы и получите.из службы.Отсюда у вас есть несколько вариантов.Одним из вариантов является использование встроенного filter
, если вы заранее знаете, какие категории вы хотите.Возьмем, к примеру, следующий набор данных
objs = [{'_id': 1, 'categories': ['a', 'b', 'c']},
{'_id': 2, 'categories': ['b']},
{'_id': 3, 'categories': ['c']}]
Вы можете отфильтровать результаты, которые содержат только категорию b
, например
def f(obj):
return 'b' in obj['categories']
filtered_objs = filter(f, objs)
print(filtered_objs)
# outputs:
# [{'_id': 1, 'categories': ['a', 'b', 'c']},
# {'_id': 2, 'categories': ['b']}]
, если вы хотите, чтобы повторно используемая функция фильтровала для разных категорий.Вы можете сделать что-то вроде
def filter_objs(objs, category):
result = []
for obj in objs:
if category in obj['categories']:
result.append(category)
return result
filtered_objs = filter_objs(objs, 'b')
И, наконец, вы можете просто использовать понимание списка, либо встроенное по мере необходимости, либо в функции filter_objs.
filtered_objs = [obj for obj in objs if 'b' in obj['categories']]
Так что есть несколько способовчтобы отфильтровать результат, но первым шагом является использование json.loads