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

如何在值含列表的唯一映射字典中根据元素获取对应键?

Python中从值(含列表/单个元素)反向查找唯一键的最优写法

当字典的值可能是单个元素或列表,且所有键与值(包括列表内元素)均唯一时,如何根据输入元素快速找到对应的键?示例场景如下:

my_dict = {
    'key1': ['a', 'b', 'c'],
    'key2': ['d', 'e'],
    'key3': ['f'],
    'key4': 'g'
}

identifier = 'a'
# 期望得到结果:'key1'

方案1:构建反向映射字典(推荐多次查找场景)

因为所有值唯一,我们可以预先构建一个值到键的反向字典,后续查找只需O(1)时间,效率最高:

# 构建反向映射
reverse_map = {}
for key, value in my_dict.items():
    if isinstance(value, list):
        for item in value:
            reverse_map[item] = key
    else:
        reverse_map[value] = key

# 执行查找
identifier = 'a'
print(reverse_map.get(identifier))  # 输出: key1

方案2:生成器表达式单次查找

如果仅需单次查找,无需构建额外字典,用生成器表达式直接遍历匹配即可,更节省内存:

identifier = 'a'
result = next(key for key, val in my_dict.items() 
              if (isinstance(val, list) and identifier in val) or val == identifier)
print(result)  # 输出: key1

关于原字典类型的说明

原字典用来存储分组映射完全合理,结合反向映射既保留了原结构的可读性,又实现了高效的反向查找,是这类场景的常规处理方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:07:20