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

如何修改Python字典值:将Key融入Value并替换空格为下划线

解决字典值的修改问题

问题描述

现有字典:

TestDict = {'Group1': 'Crew 1', 'Group2': 'Crew 2', 'Group3': 'Crew 3'}

期望修改后得到:

{'Group1': 'Group1_Crew_1', 'Group2': 'Group2_Crew_2', 'Group3': 'Group3_Crew_3'}

要求让key成为value的一部分,并将原value中的空格替换为下划线。

你尝试了以下代码,但输出所有值均为Group3_Crew 3:

for key, value in TestDict.items(): newDict = {key: key + "_" + value for key in TestDict}

问题分析

这段代码的问题有两个:

  1. 你把字典推导式放进了for循环里,每次循环都会重新创建newDict,最后一次循环(对应Group3)的结果会覆盖之前所有内容;
  2. 推导式里没有用到循环中的value变量,反而重新遍历了TestDict的key,导致每次推导式生成的字典都是用当前循环的key去匹配所有原字典的key,最终结果自然全是最后一组的内容。

正确解法

方法一:简洁的字典推导式

直接在推导式里同时获取key和value,处理空格替换后拼接:

TestDict = {'Group1': 'Crew 1', 'Group2': 'Crew 2', 'Group3': 'Crew 3'}
newDict = {key: f"{key}_{value.replace(' ', '_')}" for key, value in TestDict.items()}
print(newDict)

这里用value.replace(' ', '_')把原value的空格换成下划线,再通过f-string完成key和处理后value的拼接。

方法二:直观的循环遍历

如果更习惯分步处理,也可以用普通循环构建新字典:

TestDict = {'Group1': 'Crew 1', 'Group2': 'Crew 2', 'Group3': 'Crew 3'}
newDict = {}
for key, value in TestDict.items():
    processed_value = f"{key}_{value.replace(' ', '_')}"
    newDict[key] = processed_value
print(newDict)

这种方式逐一对每个键值对处理,不会出现覆盖问题,逻辑更清晰。

输出结果

两种方法运行后都会得到期望的字典:

{'Group1': 'Group1_Crew_1', 'Group2': 'Group2_Crew_2', 'Group3': 'Group3_Crew_3'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:58:24