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

Python:如何用dict.get()等方法实现列表值反向取键并生成新字典

实现方法优化(使用dict.get())

思路:先构建反向映射字典

先遍历first_dict,把每个列表元素和对应的键建立反向映射,之后就可以通过dict.get()快速查找,避免重复遍历first_dict,提升效率。

代码实现

first_dict = {'a': ['1', '2', '3'],
              'b': ['4', '5'],
              'c': ['6'],
              }
second_dict = {'1': 'wqeewe',
               '2': 'efsafa',
               '4': 'fsasaf',
               '6': 'kgoeew',
               '7': 'fkowew'
               }

# 构建反向映射:元素 -> first_dict对应的键
reverse_map = {item: key for key, value_list in first_dict.items() for item in value_list}

# 生成目标字典,用get方法指定默认值None
third_dict = {k: reverse_map.get(k, None) for k in second_dict}

print(third_dict)
# 输出:{'1': 'a', '2': 'a', '4': 'b', '6': 'c', '7': None}

原方法的对比

你之前实现的key_return方法,每次查询都要遍历first_dict,如果second_dict包含大量键,重复遍历会降低效率。而先构建反向映射的方式只需要遍历一次first_dict,后续查询都是O(1)的时间复杂度,更高效。

补充说明

  • reverse_map.get(k, None)正好满足需求:如果键k存在于反向映射中,返回对应的first_dict的键;不存在则返回None。
  • 如果first_dict中存在同一个元素出现在多个列表的情况,反向映射会保留最后一次遍历到的键(因为后面的赋值会覆盖前面的),如果需要处理这种场景,可以把反向映射的值改成列表,存储所有对应的键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:30:49