如何将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
相关产品推荐
相关产品推荐

