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

如何基于两个字典列表按相同id匹配生成word:lemma映射字典

Pythonic的词元映射字典实现方案

你原本的实现逻辑是完全正确的,时间复杂度已经是最优的线性复杂度,只是可以通过Python原生的字典推导式简化写法,去掉冗余的空字典初始化、逐行赋值步骤,更符合社区惯用编码风格。


具体实现

核心简化写法

和原有逻辑1:1等价,无性能损耗:

# 构建id到lemma的查找映射
id_lemma_map = {item['id']: item['lemma'] for item in lemmas}
# 构建最终word到lemma的替换字典
word_lemma_dict = {item['word']: id_lemma_map[item['id']] for item in words}

鲁棒性增强版本

如果你的数据里可能存在words中的id在lemmas中无匹配的脏数据,可以用dict.get()设置兜底值,避免抛出KeyError中断程序,比如兜底保留原词不替换:

id_lemma_map = {item['id']: item['lemma'] for item in lemmas}
word_lemma_dict = {item['word']: id_lemma_map.get(item['id'], item['word']) for item in words}

写法优势

  • 意图清晰:字典推导式直接表明「从可迭代对象构建字典」的目的,读代码的人不需要逐行跟踪循环里的赋值逻辑
  • 简洁无冗余:不需要提前声明空字典,代码更紧凑
  • 性能稳定:字典推导式是Python原生优化的语法,执行效率和手写for循环相当,甚至略快于逐次键赋值的写法
  • 易维护:后续如果需要加过滤条件(比如过滤掉空word、空lemma),直接在推导式里加if判断即可,不需要改动循环结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:58:00