You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python字典中_name键替换为其值并关联对应_raw_value值?

解决字典键值配对转换问题

这里提供两种适合新手的实现方式,直接就能用:

基础循环写法(易理解)

original_dict = {
    "ata_smart_attributes_table_0_name": "Raw_Read_Error_Rate",
    "ata_smart_attributes_table_0_raw_value": 0,
    "ata_smart_attributes_table_7_name": "Power_On_Hours",
    "ata_smart_attributes_table_7_raw_value": 1046,
}

new_dict = {}
# 遍历原字典的所有键
for key in original_dict:
    # 只处理以"_name"结尾的键
    if key.endswith("_name"):
        # 替换"_name"为"_raw_value",找到对应的数值键
        raw_value_key = key.replace("_name", "_raw_value")
        # 用name对应的值作为新键,raw_value的值作为新值
        new_dict[original_dict[key]] = original_dict[raw_value_key]

print(new_dict)
# 输出: {'Raw_Read_Error_Rate': 0, 'Power_On_Hours': 1046}

步骤说明:

  • 遍历原字典的每个键,筛选出_name结尾的条目,这些是新字典的键来源
  • 通过字符串替换快速找到对应的_raw_value键,不用手动提取数字,更省心
  • 将name对应的值作为新键,raw_value对应的值作为新值存入新字典

简洁字典推导式写法

如果想让代码更紧凑,可以用字典推导式,逻辑和上面一致:

original_dict = {
    "ata_smart_attributes_table_0_name": "Raw_Read_Error_Rate",
    "ata_smart_attributes_table_0_raw_value": 0,
    "ata_smart_attributes_table_7_name": "Power_On_Hours",
    "ata_smart_attributes_table_7_raw_value": 1046,
}

new_dict = {
    original_dict[key]: original_dict[key.replace("_name", "_raw_value")]
    for key in original_dict
    if key.endswith("_name")
}

print(new_dict)

健壮性优化(可选)

如果担心原字典可能存在_name没有对应_raw_value的情况,可以加个判断避免报错:

new_dict = {}
for key in original_dict:
    if key.endswith("_name"):
        raw_value_key = key.replace("_name", "_raw_value")
        # 先检查对应的raw_value键是否存在
        if raw_value_key in original_dict:
            new_dict[original_dict[key]] = original_dict[raw_value_key]
        else:
            print(f"注意:找不到{key}对应的数值键")

内容的提问来源于stack exchange,提问作者sco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:45:28