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

能否基于字典键生成指定反向映射格式的输出?

实现字典的反向映射:按值的类型分组原键

当然可以实现!这本质上是一个反向映射的问题——我们需要把原字典中「值的前缀类型部分」作为新键,把对应的原键收集起来并拼接成逗号分隔的字符串作为新值。下面是具体的Python实现方案:

方法一:基础循环实现

不需要额外导入模块,用原生字典即可完成:

# 你的原字典
original_dict = {'a': 'NPRO,206', 'b': 'PREP,131', 'c': 'PRCL,120', 'd': 'NPRO,66'}

# 初始化空字典存储结果
result_dict = {}

# 遍历原字典的键值对
for original_key, value in original_dict.items():
    # 拆分值,提取类型部分(比如"NPRO")
    type_key = value.split(',')[0]
    # 如果类型键还没在结果字典中,先初始化空列表
    if type_key not in result_dict:
        result_dict[type_key] = []
    # 将原键添加到对应类型的列表
    result_dict[type_key].append(original_key)

# 将列表转换为逗号分隔的字符串,得到最终格式
final_result = {k: ','.join(v) for k, v in result_dict.items()}

print(final_result)
# 输出结果:{'NPRO': 'a,d', 'PREP': 'b', 'PRCL': 'c'}

方法二:用collections.defaultdict简化代码

如果需要更简洁的写法,可以使用Python标准库中的defaultdict,它会自动为不存在的键初始化空列表:

from collections import defaultdict

original_dict = {'a': 'NPRO,206', 'b': 'PREP,131', 'c': 'PRCL,120', 'd': 'NPRO,66'}

# 初始化默认列表类型的字典
result_dict = defaultdict(list)

for original_key, value in original_dict.items():
    type_key = value.split(',')[0]
    result_dict[type_key].append(original_key)

# 转换为目标格式
final_result = {k: ','.join(v) for k, v in result_dict.items()}

print(final_result)
# 输出结果与方法一完全一致

关键逻辑说明

  • 拆分值提取类型:通过split(',')[0]从值中分离出类型标识(比如从"NPRO,206"得到"NPRO");如果你的值格式可能有多个逗号,推荐用partition(',')[0],它只会拆分第一个逗号,更稳妥。
  • 收集原键:将同一类型对应的原键存入列表,最后用','.join()把列表拼接成逗号分隔的字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:52:30