无需硬编码随机中间键,如何从嵌套字典中获取MetaEntry数据
方案1:基于已知固定顶层键过滤(执行效率更高)
如果确认顶层字典仅包含Tags、ObjectId两个固定公共键,剩余的唯一键就是动态业务对象键,可以直接过滤后取数:
# 定义顶层已知的固定公共键集合 fixed_top_keys = {"Tags", "ObjectId"} # 过滤得到动态业务对象键 dynamic_business_key = [k for k in dictionary if k not in fixed_top_keys][0] # 提取目标数据 meta_entry = dictionary[dynamic_business_key]['MetaData']['MetaEntry'] print(meta_entry)
方案2:通用遍历匹配(兼容性更强)
无需提前知晓顶层固定键规则,直接遍历所有顶层值匹配包含MetaData字段的字典即可,适配后续顶层键新增、业务对象数量变化的场景:
基础版
meta_entry = None for val in dictionary.values(): # 判断当前值为字典且包含MetaData键 if isinstance(val, dict) and "MetaData" in val: meta_entry = val["MetaData"]["MetaEntry"] break if meta_entry: print(meta_entry)
健壮性优化版
加入键不存在的异常兼容,即使中间层级的MetaData或MetaEntry键缺失也不会抛出报错:
meta_entry = None for val in dictionary.values(): if isinstance(val, dict): meta_data = val.get("MetaData", {}) current_entry = meta_data.get("MetaEntry") if current_entry: meta_entry = current_entry break print(meta_entry if meta_entry else "未找到匹配的MetaEntry数据")
内容的提问来源于stack exchange,提问作者Praveen K M
相关产品推荐
相关产品推荐

