Python如何从嵌套字典中提取所有PNR值并生成数组
提取嵌套字典中所有PNR字段值的解决方案
错误原因分析
你之前使用output.get("PNR")返回None是因为PNR不是外层字典output的直接键,而是外层字典每个值(子字典)内部的键,直接在外层字典查询自然无法匹配到对应值。
可兼容任意字典长度的实现方案
方案1:列表推导式(Python 3.8+,最简洁)
使用海象运算符简化判断逻辑,一行即可完成提取:
pnr_list = [pnr for sub_dict in output.values() if (pnr := sub_dict.get("PNR")) is not None]
方案2:通用循环写法(兼容所有Python版本)
如果需要兼容Python3.8以下版本,使用普通遍历逻辑即可:
pnr_list = [] # 遍历外层字典的所有子字典 for sub_dict in output.values(): # 尝试提取子字典的PNR值,不存在则返回None pnr_val = sub_dict.get("PNR") if pnr_val is not None: pnr_list.append(pnr_val)
运行结果示例
针对你给出的示例字典,上述代码执行后pnr_list的结果为:
["51313542", "13151351351", "13151351351", "13151351351", "13151351351", "13151351351", "13151351351", "13151351351", "13151351351", "13151351351", "13151351351"]
内容的提问来源于stack exchange,提问作者Umut K.
相关产品推荐
相关产品推荐

