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

Python中max()/min()处理字典返回键而非值的问题排查

字典调用max()/min()返回键而非值的问题解析

问题场景

使用len()创建了存储字符串长度的字典,格式示例:{0: 101, 1: 101, 2: 101, 3: 100 ...}。调用max()和min()获取最值时,返回的是字典的最大/最小键(如0和n-1),结果不符合预期。

相关代码

创建字典的代码:

n = len(df.index)  
lengths = {} 

for i in range(0,n):
    lengths[i] = len(df.at[i,'col'])

获取最值的错误代码:

maximum = max(lengths)
minimum = min(lengths)

转为DataFrame列后的正确取值代码:

minimum = min(df.loc[:,'lengths'])

问题原因

在Python中,直接对字典调用max()或min()时,默认只会遍历字典的键(keys),而非值(values)。你创建的字典键是0到n-1的连续整数,所以max(lengths)返回最大的键n-1,min(lengths)返回最小的键0,完全和目标的长度值无关。

而将字典转为DataFrame的Series列后,调用min()时会默认遍历Series的值,因此能得到正确的长度最值。

解决方法

直接从字典获取值的最值

如果要保留字典结构,只需明确指定遍历字典的值:

# 获取长度的最大值
maximum = max(lengths.values())
# 获取长度的最小值
minimum = min(lengths.values())

如果需要同时获取最值对应的索引(键)和长度值,可以这样写:

# 获取值最大的键值对(索引+长度)
max_item = max(lengths.items(), key=lambda x: x[1])
# 获取值最小的键值对(索引+长度)
min_item = min(lengths.items(), key=lambda x: x[1])

更高效的Pandas写法

其实无需手动循环创建字典,Pandas可以直接生成长度列,代码更简洁高效:

# 直接生成字符串长度列
df['lengths'] = df['col'].str.len()
# 获取最值
max_length = df['lengths'].max()
min_length = df['lengths'].min()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:35:18