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

Python字典n[i,j]按i分组求每组最大值的实现方法

解决方法:按固定i值查找字典中的最大值

没问题,这有几种实用的Python方法帮你完成这个需求——针对每个固定的i,找到字典n中对应条目的最大值及对应的键:

首先,先把你的字典用标准Python语法构造出来,方便后续操作:

n = {
    (1, 1): 3,
    (1, 2): 4,
    (1, 3): 7,
    (2, 1): 5,
    (2, 2): 64,
    (2, 3): 32,
    (3, 1): 21,
    (3, 2): 21,
    (3, 3): 45
}

方法1:手动分组查找(直观易懂)

先按i值把所有条目分组,再对每组求最大值:

# 初始化分组字典,键是i值,值是(数值, 原键)的列表
groups = {}
for key, value in n.items():
    i, j = key
    if i not in groups:
        groups[i] = []
    groups[i].append( (value, key) )

# 遍历每个分组,找到最大值并输出
for i in groups:
    max_value, max_key = max(groups[i])
    print(f"当i={i}时,最大值为`n{max_key} = {max_value}`")

运行这段代码会输出:

当i=1时,最大值为`n(1, 3) = 7`
当i=2时,最大值为`n(2, 2) = 64`
当i=3时,最大值为`n(3, 3) = 45`

方法2:用itertools.groupby(简洁的分组工具)

如果喜欢用标准库工具,可以用itertools.groupby,注意需要先按i值排序(因为groupby只对连续的相同键分组):

from itertools import groupby

# 先按i值排序,确保同一i的条目连续排列
sorted_items = sorted(n.items(), key=lambda x: x[0][0])

# 按i值分组并查找最大值
for i, group in groupby(sorted_items, key=lambda x: x[0][0]):
    # 从组中提取(数值, 原键)对,直接取最大值
    max_val, max_key = max( (v, k) for k, v in group )
    print(f"当i={i}时,最大值为`n{max_key} = {max_val}`")

方法3:字典推导式(一行式风格)

如果想要更紧凑的代码,可以用字典推导式直接生成每个i对应的最大值结果:

# 生成{ i: (最大值, 对应键) }的字典
max_per_i = {
    i: max( (v, k) for k, v in n.items() if k[0] == i )
    for i in { key[0] for key in n.keys() }  # 提取所有唯一的i值
}

# 遍历输出结果
for i, (val, key) in max_per_i.items():
    print(f"当i={i}时,最大值为`n{key} = {val}`")

额外说明

如果存在多个j对应同一个最大值(比如你的例子中i=3时,(3,1)和(3,2)的值都是21),上面的方法会返回第一个遇到的键。如果需要收集所有达到最大值的键,可以稍微调整代码,比如:

for i in groups:
    # 先找到当前组的最大值
    max_val = max(v for v, k in groups[i])
    # 收集所有等于最大值的键
    max_keys = [k for v, k in groups[i] if v == max_val]
    print(f"当i={i}时,最大值为{max_val},对应的键有:{max_keys}")

这段代码会输出:

当i=1时,最大值为7,对应的键有:[(1, 3)]
当i=2时,最大值为64,对应的键有:[(2, 2)]
当i=3时,最大值为45,对应的键有:[(3, 3)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:40:45