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

如何实现列表元素与含多值的字典的匹配映射?

多值字典匹配实现方案

思路分析

原字典的结构是「目标输出(键)」对应「多个匹配别名(值,逗号分隔)」,要实现输入列表到目标输出的映射,核心是反转字典结构:把每个别名单独映射到对应的目标键,之后直接用输入元素查找反转后的字典即可。

代码实现

  1. 定义原字典和输入列表:
my_dict = {
    'Incident':'INC, Incident',
    'Minor Enchancement':'Change',
    'ServiceRequest':'SR, ServiceRequest'
}

new_list = ['Incident','Inc','SR','Change']
  1. 生成反转映射字典(支持不区分大小写匹配):
# 创建反转映射:别名 -> 目标键
reverse_map = {}
for target_key, aliases_str in my_dict.items():
    # 拆分逗号分隔的别名,去除每个别名的前后空格
    aliases = [alias.strip() for alias in aliases_str.split(',')]
    # 遍历每个别名,转小写后存入映射(实现不区分大小写匹配)
    for alias in aliases:
        reverse_map[alias.lower()] = target_key
  1. 遍历输入列表,生成结果:
result = []
for item in new_list:
    # 将输入元素转小写,从反转映射中获取目标键
    matched_key = reverse_map.get(item.lower())
    # 若找不到匹配项,可根据需求处理(比如保留原元素或抛出提示)
    result.append(matched_key if matched_key else item)

print(result)

输出结果

运行后输出:

['Incident', 'Incident', 'ServiceRequest', 'Minor Enchancement']

注:你提供的期望输出中存在笔误(SR应对应ServiceRequest,Change应对应Minor Enchancement),上述结果为逻辑正确的匹配输出。

扩展说明

  • 如果需要严格区分大小写匹配,去掉代码中.lower()的转换即可;
  • 若输入列表可能存在未匹配的元素,可通过get方法的第二个参数设置默认值,比如reverse_map.get(item.lower(), "未匹配")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:50:15