如何遍历嵌套列表与字典混合结构并筛选指定数据
解决方案
要遍历这种嵌套的字典和列表混合结构,收集目标值,用递归遍历是最直接的方式。以下是Python实现代码:
def collect_target_values(data): result = [] # 处理字典类型 if isinstance(data, dict): # 检查当前字典是否符合条件 if data.get("field_need_to_filter") is True and "field_13" in data: result.append(data["field_13"]) # 递归遍历字典的所有值 for value in data.values(): result.extend(collect_target_values(value)) # 处理列表类型 elif isinstance(data, list): # 递归遍历列表的每个元素 for item in data: result.extend(collect_target_values(item)) return result # 你的示例数据 sample_data = { "field_1": "aaa", "field_2": [ { "field_3": "bbb", "field_4": "ccc", "field_need_to_filter": False }, { "field_5": "ddd", "field_6": [ { "field_7": "eee", "field_8": [ { "field_9": "fff", "field_10": { "field_11": "rrr", "field_12": [ { "field_13": "xxx", "field_need_to_filter": True }, { "field_13": "yyy", "field_need_to_filter": True }, { "field_13": "zzz", "field_need_to_filter": False } ] } } ] } ] } ] } # 调用函数并输出结果 print(collect_target_values(sample_data)) # 输出: ['xxx', 'yyy']
代码说明
- 递归函数会逐层遍历嵌套结构:遇到字典就检查是否满足
field_need_to_filter=True且存在field_13,满足则收集值;遇到列表就逐个遍历其中元素。 - 用
extend方法合并递归返回的结果列表,最终得到所有符合条件的field_13值。
内容的提问来源于stack exchange,提问作者wawawa
相关产品推荐
相关产品推荐

