0
0 комментариев

Есть вот такой вот словарь:

{'Junior': {'Shoes': set(), 'Accessories': set()}, 'Men': {'Shoes': {'New Balance', 'Asics', 'adidas', 'Nike', 'Saucony', 'Jordan Brand', 'Puma', 'Reebok Classic'}, 'Accessories': {'socks', 'Hats', 'bags'}}, 'Women': {'Shoes': {'Converse', 'Reebok Classic', 'adidas', 'Nike'}, 'Accessories': {'backpacks'}}}

Который генерируется вот таким вот генератором словарей:

   q = Products.query
    genders = q.filter(Products.gender !=0).group_by(Products.gender)
    categories = q.filter(Products.category != 0, Products.category != 'Clothing').group_by(Products.category).all()
 
    gen = {gender.gender: {category.category: {subcategory.subcategory for subcategory in q.filter(Products.gender == gender.gender, Products.category == category.category, Products.subcategory != 0).group_by(Products.subcategory)} for category in categories} for gender in genders}

Не уверен, что генератор написан правильно, однако он работает почти так как надо.

Пробовал использовать #gen = defaultdict(lambda:None,gen)
Но потом понял, что работает это по другому принципу.

Дело в том, что в БД действительно нету элементов удовлетворяющих условию выборки(фильтра), по этому и такая картина {'Junior': {'Shoes': set(), 'Accessories': set()}

Такой словарь нельзя ни распарсить, ни привести к JSON, опять таки, по причине set()

Задача в том, чтобы вместо set() записать None или False


Добавить комментарий