如何修改字典所有键并输出指定格式的YAML内容
问题描述
想要实现将字典的所有键修改为<@原键名>的形式,使得YAML输出符合目标格式,示例代码如下:
import yaml original_dict = {"test1":1,"test2":2,"test3":3} print(yaml.dump(original_dict, sort_keys=False, default_flow_style=False)) # 输出 # test1: 1 # test2: 2 # test3: 3 # 执行更新操作后 print(yaml.dump(original_dict, sort_keys=False, default_flow_style=False)) # 期望输出 # <@test1>: 1 # <@test2>: 2 # <@test3>: 3
解决方案
方法1:创建新字典(推荐,不修改原数据)
通过字典推导式生成一个键格式修改后的新字典,原字典保持不变:
import yaml original_dict = {"test1":1,"test2":2,"test3":3} # 生成键格式为<@原键名>的新字典 updated_dict = {f"<@{key}>": value for key, value in original_dict.items()} print(yaml.dump(updated_dict, sort_keys=False, default_flow_style=False))
执行后输出:
<@test1>: 1 <@test2>: 2 <@test3>: 3
方法2:原地修改原字典
如果不需要保留原字典的数据,可以直接在原字典上修改键名:
import yaml original_dict = {"test1":1,"test2":2,"test3":3} # 遍历原字典的键(转成列表避免遍历过程中修改字典引发错误) for key in list(original_dict.keys()): value = original_dict.pop(key) original_dict[f"<@{key}>"] = value print(yaml.dump(original_dict, sort_keys=False, default_flow_style=False))
执行后同样会输出符合要求的YAML内容。
内容的提问来源于stack exchange,提问作者Boss Limette
相关产品推荐
相关产品推荐

