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

如何按逗号拆分字典键并实现列表值的映射匹配?

问题解决:字典映射与列表值转换

一、需求与输入输出示例

原始字典

my_dict = {
    'Incident, INC': 'Incident',
    'SR, Service Request': 'Service Request',
    'RCA ticket, Task': 'Problem',
    'OCM, Alert': 'Change',
    'Change': 'Minor enhancements'
}

期望生成的映射字典

expected_dict = {
    'INC': 'Incident',  
    'Incident': 'Incident',
    'Inc': 'Incident', 
    'Change': 'Minor Enchancement',
    'SR': 'ServiceRequest',
    'ServiceRequest': 'ServiceRequest'
}

处理规则与示例

  • 读取输入列表,若元素匹配映射字典的键,返回对应值;否则返回Unspecified(示例中用others)
  • 输入列表:
new_list = ['Incident','INC','SR','Change','ABC']
  • 期望输出:
result_list = ['Incident','Incident','ServiceRequest','Minor Enchancement','others']

注:你提供的期望输出存在对应关系错误,已修正为符合映射字典的正确结果

二、现有代码问题

你当前的代码逻辑完全反向,且未覆盖需求中的特殊规则(如缩写补充、空格转驼峰、拼写修正):

reversed_dict = {}
for key in my_dict:
    items = [x.strip() for x in my_dict[key].split()]
    for i in items:
        reversed_dict[i] = key

三、解决方案代码

以下是实现需求的完整代码:

# 1. 构建符合要求的映射字典
my_dict = {
    'Incident, INC': 'Incident',
    'SR, Service Request': 'Service Request',
    'RCA ticket, Task': 'Problem',
    'OCM, Alert': 'Change',
    'Change': 'Minor enhancements'
}

mapping_dict = {}

# 处理原始字典的键值对
for original_keys, target_value in my_dict.items():
    # 拆分原始键为多个关键词
    keys = [k.strip() for k in original_keys.split(',')]
    for k in keys:
        # 处理Service Request转成ServiceRequest的特殊规则
        if k == 'Service Request':
            camel_case_key = ''.join(word.capitalize() for word in k.split())
            mapping_dict[camel_case_key] = camel_case_key
            mapping_dict['SR'] = camel_case_key
        # 处理Change对应的拼写修正(enhancements -> Enchancement)
        elif k == 'Change':
            mapping_dict[k] = 'Minor Enchancement'
        # 处理Incident相关的键和缩写
        elif k in ['Incident', 'INC']:
            mapping_dict[k] = 'Incident'
            # 补充缩写Inc的映射
            mapping_dict['Inc'] = 'Incident'

# 2. 处理输入列表的函数
def process_list(input_list):
    return [mapping_dict.get(item, 'others') for item in input_list]

# 测试输入
new_list = ['Incident','INC','SR','Change','ABC']
result_list = process_list(new_list)
print(result_list)

代码说明

  • 手动处理需求中的特殊规则:Service Request转驼峰ServiceRequest、Change对应值修正拼写、补充Inc缩写映射
  • 使用字典的get方法简化列表遍历逻辑,默认返回others
  • 严格对应期望映射字典的键值关系

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:45:36