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

如何用for循环删除Python字典中的最大值和最小值

用for循环移除Python字典中列表的最大值和最小值

针对你的需求,我们可以通过遍历字典的每个键值对,对每个学生的分数列表单独处理,移除其中的最大值和最小值。以下是具体实现和说明:

基础实现(修改原字典)

首先看你的示例字典:

grades = {'sam': [23,43,55], 'peter': [66,55,44], 'sarah': [99,55,77]}

用for循环处理的代码如下:

grades = {'sam': [23,43,55], 'peter': [66,55,44], 'sarah': [99,55,77]}

for name, scores in grades.items():
    # 确保列表长度足够,避免删除时出错
    if len(scores) >= 2:
        max_score = max(scores)
        min_score = min(scores)
        # 移除第一个出现的最大值和最小值
        scores.remove(max_score)
        scores.remove(min_score)
    else:
        # 列表元素不足2个时,可根据需求处理,这里示例为清空列表
        scores.clear()

print(grades)

执行后输出结果:

{'sam': [43], 'peter': [55], 'sarah': [55]}

代码说明

  • grades.items():遍历字典的每个键(学生名)和值(分数列表)
  • 先判断列表长度≥2:如果列表只有1个或0个元素,删除最大/最小值会报错,这里做了容错处理
  • max(scores)和min(scores):快速获取列表的最大、最小值
  • scores.remove():删除列表中第一个匹配的目标值,注意只会删第一个出现的元素

处理重复的最大/最小值

如果列表里有多个相同的最大或最小值(比如[99,99,55,23]),上面的代码只会删掉第一个最大值。如果你想移除所有的最大/最小值,可以用循环来删除:

grades = {'sam': [23,23,55], 'peter': [66,55,66], 'sarah': [99,55,77]}

for name, scores in grades.items():
    if len(scores) >= 2:
        max_score = max(scores)
        min_score = min(scores)
        # 循环删除所有最大值
        while max_score in scores:
            scores.remove(max_score)
        # 循环删除所有最小值
        while min_score in scores:
            scores.remove(min_score)

print(grades)

执行后输出:

{'sam': [], 'peter': [55], 'sarah': [55]}

不修改原字典(生成新字典)

如果你不想改动原字典,可以生成一个新字典来存放处理后的结果,用列表推导式更简洁:

grades = {'sam': [23,43,55], 'peter': [66,55,44], 'sarah': [99,55,77]}
new_grades = {}

for name, scores in grades.items():
    if len(scores) >= 2:
        max_s = max(scores)
        min_s = min(scores)
        # 生成排除最大/最小值的新列表
        new_scores = [s for s in scores if s != max_s and s != min_s]
        new_grades[name] = new_scores
    else:
        new_grades[name] = []

print(new_grades)

这种方式更安全,适合新手避免误操作原数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:46:07