如何用Python解析YAML文件并合并指定环境与OTHERS的键集合?
配置键合并解决方案
原始YAML配置
DEV: A: "A_DEV_config.xml" B: "B_DEV_config.xml" C: "C_DEV_config.xml" PROD: D: "D_PROD_config.xml" E: "E_PROD_config.xml" F: "E_PROD_config.xml" OTHERS: G: "G_config.xml" H: "H_config.xml" K: "K_config.xml"
需求说明
- 选择
DEV环境时,输出键列表:A,B,C,G,H,K - 选择
PROD环境时,输出键列表:D,E,F,G,H,K - 无论选择哪个环境,必须包含
OTHERS节点下的所有键
已尝试代码
stream = open(yml_file, 'r') data = yaml.safe_load(stream) print(data.get("DEV").keys())
实现代码
通过列表拼接即可完成两个节点键的合并,完整代码如下:
import yaml # 替换为你的配置文件实际路径 yml_file = "config.yaml" # 安全加载YAML数据 with open(yml_file, 'r') as stream: data = yaml.safe_load(stream) # 切换目标环境,可改为"PROD" target_env = "DEV" # 获取目标环境的键列表 env_keys = list(data.get(target_env, {}).keys()) # 获取OTHERS节点的键列表 others_keys = list(data.get("OTHERS", {}).keys()) # 合并两个键列表 combined_keys = env_keys + others_keys # 输出为逗号分隔的字符串(也可直接输出列表) print(",".join(combined_keys))
补充说明
- 用
list()将字典的键视图转换为列表,方便后续拼接操作 - 直接用
+拼接目标环境键列表和OTHERS键列表,完全匹配需求 - 如果场景中存在重复键需要去重,可转为集合后再转回列表:
combined_keys = list(set(env_keys + others_keys)),当前需求无需此操作
内容的提问来源于stack exchange,提问作者macder
相关产品推荐
相关产品推荐

