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

如何实现嵌套字典与普通字典的匹配文档数值除法?

解决嵌套字典值按对应文档数值归一化的问题

这个需求其实很容易实现,用Python的嵌套字典推导式就能快速搞定,代码简洁还易维护。直接看解决方案:

首先先定义你的原始字典:

dict1 = {'document1': {'a': 3, 'b': 1, 'c': 5}, 'document2': {'d': 2, 'e': 4}}
dict2 = {'document1': 28, 'document2': 36}

然后一行代码就能生成你要的dict3:

dict3 = {
    doc: {key: val / dict2[doc] for key, val in inner.items()}
    for doc, inner in dict1.items()
}

代码解释

  • 外层的字典推导式遍历dict1的每个文档(比如document1)和它对应的内层字典;
  • 内层的推导式遍历每个内层字典的键值对,把每个值除以dict2中对应文档的数值;
  • 最后自动组合成你需要的嵌套字典结构。

运行后打印dict3,就能得到你预期的结果:

print(dict3)
# 输出:
# {'document1': {'a': 0.10714285714285714, 'b': 0.03571428571428571, 'c': 0.17857142857142858}, 
#  'document2': {'d': 0.05555555555555555, 'e': 0.1111111111111111}}

额外优化(可选)

如果担心dict2里可能没有dict1中的文档键(避免KeyError),或者想处理除以零的情况,可以用dict.get()方法设置默认值:

# 当dict2中没有对应文档时,默认除以1(也可以改成其他合理值,比如跳过该文档)
dict3 = {
    doc: {key: val / dict2.get(doc, 1) for key, val in inner.items()}
    for doc, inner in dict1.items()
}

这样就完美解决你的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:58:31