如何从Python嵌套字典中返回最大值及其关联的内外层键
两层嵌套字典查找全局最大值实现方法
实现逻辑说明
针对两层结构的字典,遍历所有外层、内层键值对,实时记录当前遇到的最大值以及对应的内外层键,遍历完成后即可得到目标结果,全程仅需一次完整遍历,时间复杂度为O(n),没有额外空间开销。
代码实现
方法1:易读的双层循环实现
逻辑清晰,适合新手理解和二次修改:
my_dict = { 0: {1: 10, 2: 20, 3: 30}, 10: {10: 100, 20: 200, 30: 300}, 20: {100: 1000, 200: 2000, 300: 3000} } # 初始化最大值为负无穷,对应的内外层键为空 max_value = float('-inf') target_outer_key = None target_inner_key = None for outer_key, inner_dict in my_dict.items(): for inner_key, value in inner_dict.items(): if value > max_value: max_value = value target_outer_key = outer_key target_inner_key = inner_key # 输出结果:3000 20 300 print(max_value, target_outer_key, target_inner_key)
方法2:简洁生成器写法
利用Python内置max函数对元组的比较规则,少量代码即可完成计算,适合追求代码简洁的场景:
my_dict = { 0: {1: 10, 2: 20, 3: 30}, 10: {10: 100, 20: 200, 30: 300}, 20: {100: 1000, 200: 2000, 300: 3000} } max_value, target_outer_key, target_inner_key = max( (value, outer_key, inner_key) for outer_key, inner_dict in my_dict.items() for inner_key, value in inner_dict.items() ) # 输出结果:3000 20 300 print(max_value, target_outer_key, target_inner_key)
注意事项
- 上述代码默认输入为固定两层结构的字典,且所有内层值为可比较的数值类型;如果存在更深层级的嵌套、或者值类型不统一,需要额外增加类型判断和递归遍历逻辑。
- 如果字典中存在多个值相等的全局最大值,上述代码会返回遍历过程中首次遇到的最大值对应的键;如果需要返回所有匹配结果,可在遍历过程中把所有等于当前最大值的键值对存入结果列表即可。
内容的提问来源于stack exchange,提问作者jim
相关产品推荐
相关产品推荐

