You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写递归函数提取嵌套字典中的全部products字段数据

问题原因排查
  • 直接报错原因:遍历到sub_categories键时,你把键名字符串k(值为"sub_categories")传给了递归调用的get_product函数,函数预期接收字典参数,尝试调用.items()遍历字符串时,会直接抛出AttributeError: 'str' object has no attribute 'items'属性错误。
  • 逻辑错误1:遇到sub_categories就直接return,不会收集当前层级的products字段内容,也不会处理所有子分类,只能返回第一个匹配到的内容,无法收集全量产品。
  • 逻辑错误2:sub_categories是存储子分类字典的列表,需要遍历列表内的每一个子分类字典分别递归处理,不能直接把键名或者整个列表传给递归函数。
修正方案

实现思路是每次处理一个分类时,先收集当前分类的所有产品,再遍历所有子分类递归获取子分类下的所有产品,合并后返回:

def get_all_products(category):
    # 初始化结果存储列表
    all_products = []
    # 优先收集当前分类下的产品
    all_products.extend(category.get('products', []))
    # 遍历所有子分类,递归获取子分类的产品合并到结果
    for sub_category in category.get('sub_categories', []):
        all_products.extend(get_all_products(sub_category))
    return all_products

# 测试调用
print(get_all_products(category))
运行结果
['Sony xperia 1', 'Samsung Galaxy A32', 'Apple iphone 12', 'Xiaomi redmi 9', 'Dell inspiron 3583-5278', 'HP pavilion dk1056wm', 'Asus ROG strix', 'Microsoft surface book 3', 'Lenovo ideapad 3']

内容的提问来源于stack exchange,提问作者Yasaman Shokri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 07:18:03