def find_categories(categories, parent=None): for category_config in raw_categories: yield Category(id=category_config['id'], name=category_config['name'], parent=parent) for subcategory_config in category_config.get('subcategories', []): yield Category(id=subcategory_config['id'], name=subcategory_config['name'], parent=category_config['id'])