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

如何在Python嵌套字典中获取最小值对应的内外层键?

如何在嵌套字典中找到最小值对应的外层和内层键?

这问题问到点子上了!从单层字典扩展到嵌套字典找最小值关联的键,Python确实有非常优雅的实现方式,咱们结合你的例子来一步步说。

首先先明确你的示例字典:

d = {
    3: {5: 0.6, 37: 0.98, 70: 0.36},
    5: {5: 2.67, 37: 0.01, 70: 0.55},
    7: {5: 0.2, 37: 0.3, 70: 1.2}
}

Pythonic的核心思路:扁平化嵌套结构 + 利用min()函数

单层字典里我们用min(d.items(), key=lambda x: x[1])找最小值对应的键值对,嵌套字典的话,我们只需要先把所有的「外层键-内层键-值」组合成可迭代的元组,再用min()根据值来筛选就行。

直接上代码:

# 用生成器表达式扁平化所有嵌套的键值关系
min_tuple = min(
    (outer_k, inner_k, val)
    for outer_k, inner_dict in d.items()
    for inner_k, val in inner_dict.items()
    key=lambda item: item[2]  # 按照元组里的第三个元素(值)排序
)

# 提取结果
outer_key, inner_key, min_value = min_tuple
print(f"最小值{min_value}对应的外层键是{outer_key},内层键是{inner_key}")
# 输出:最小值0.01对应的外层键是5,内层键是37

为什么这是Pythonic的写法?

  • 简洁直观:用生成器表达式代替嵌套循环,符合Python「扁平胜于嵌套」的设计哲学
  • 内存高效:生成器不会一次性把所有元组都加载到内存里,处理大字典时更友好
  • 灵活扩展:如果以后字典嵌套层次变深,只需要在生成器里多加一层循环就行,比如三层字典就再加一个for ... in ...

额外小提示

如果你的字典里有多个相同的最小值,min()会返回第一个遍历到的那个组合。要是需要找出所有最小值对应的键组合,可以用列表推导式筛选:

min_val = min(val for inner_dict in d.values() for val in inner_dict.values())
all_min_keys = [
    (outer_k, inner_k)
    for outer_k, inner_dict in d.items()
    for inner_k, val in inner_dict.items()
    if val == min_val
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:25:01