Python解析JSON实现tar.gz与对应yaml文件映射不受顺序影响的方案
实现方案
你之前的实现手动逐行处理JSON文本、硬依赖路径的行位置,才会无法适配顺序变化的场景。直接调用Python官方json库解析输入文件,通过后缀名识别两类文件,完全不受数组内元素顺序的影响,代码也更简洁稳定。
import json def read_input(): files_to_be_processed = {} # 直接加载JSON文件,自动解析为标准字典结构 with open('input.json', 'r', encoding='utf-8') as f: input_data = json.load(f) # 遍历所有存储路径的数组 for path_list in input_data.values(): # 按后缀筛选对应文件,和数组内顺序无关 tar_gz_path = next(path for path in path_list if path.endswith('.tar.gz')) yaml_path = next(path for path in path_list if path.endswith('.yaml')) files_to_be_processed[tar_gz_path] = yaml_path return files_to_be_processed if __name__ == "__main__": result = read_input() print(result)
适配说明
- 完全覆盖你提到的所有场景:数组内tar.gz在前、yaml在前、不同数组顺序混合都可以正常生成目标字典
- 若需要兼容数组可能缺失对应后缀文件的极端场景,可将
next()方法替换为带异常捕获的逻辑,添加自定义兜底处理即可
内容的提问来源于stack exchange,提问作者Goku
相关产品推荐
相关产品推荐

