如何在顶层键可变的Python嵌套字典中批量查找studio键内容
解决方案
核心思路
无需关注顶层键的具体取值,直接遍历字典的所有顶层值(调用dict.values()方法即可获取),对每个顶层值按路径匹配["data"]["studio"]即可实现无感知提取。
代码实现
基础版本(适配结构完全统一的场景)
如果确定所有待处理字典的结构完全符合预期,不会出现字段缺失的情况,可以用如下写法:
# 把所有待处理的字典放进一个列表 dict_list = [dict1, dict2] # 存储所有提取到的studio内容 studio_result = [] for cur_dict in dict_list: # 直接遍历顶层值,不需要管顶层键是什么 for top_value in cur_dict.values(): if "studio" in top_value.get("data", {}): studio_result.append(top_value["data"]["studio"])
容错增强版本(适配可能存在字段缺失的场景)
如果不能保证所有结构100%统一,可增加逐层判断避免抛出KeyError:
studio_result = [] for cur_dict in [dict1, dict2]: for top_value in cur_dict.values(): data_node = top_value.get("data") if not data_node: continue studio_node = data_node.get("studio") if studio_node: studio_result.append(studio_node)
极简一行写法
如果偏好简洁的实现,可以用生成器表达式完成:
studio_result = [top_val["data"]["studio"] for d in [dict1, dict2] for top_val in d.values() if "studio" in top_val.get("data", {})]
额外说明
如果确认每个字典里最多只有一个包含studio的顶层节点,可以在提取到第一个符合条件的节点后加break终止当前字典的遍历,减少不必要的性能消耗。
内容的提问来源于stack exchange,提问作者emmasa
相关产品推荐
相关产品推荐

