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

如何在Python中通过枚举(Enum)计算列表元素的平均值?

解决Enum枚举成员的平均值计算问题

问题原因

statistics.mean函数无法直接处理Enum枚举成员对象,它需要数值类型(如int、float)的输入。你遇到的AttributeError就是因为枚举成员不是数值,没有numerator属性(该属性是分数/数值类型的特性)。

解决方案

要计算枚举成员的平均值,需要先提取每个枚举成员对应的value属性(也就是你定义枚举时赋予的整数),再用这些数值计算平均值。

修改后的代码

from enum import Enum
import statistics

class Ing(Enum):
    Water = 0
    Sugar = 1
    Apple = 2
    Flour = 3

Dish1 = ["Apple Pie", Ing.Water, Ing.Sugar, Ing.Apple, Ing.Flour]
Avg_All = []

# 提取菜品名称并加入结果列表
dish_name = Dish1.pop(0)
Avg_All.append(dish_name)

# 提取枚举成员的value值,生成数值列表
ing_values = [ing.value for ing in Dish1]
# 计算平均值
avg = statistics.mean(ing_values)
# 将平均值加入结果列表
Avg_All.append(avg)

print(Avg_All)  # 输出: ['Apple Pie', 1.5]

多菜品扩展示例

如果有多个菜品需要处理,可以用循环简化流程:

# 假设有多个菜品
dishes = [
    ["Apple Pie", Ing.Water, Ing.Sugar, Ing.Apple, Ing.Flour],
    ["Sugar Water", Ing.Water, Ing.Sugar]
]

Avg_All = []
for dish in dishes:
    name = dish.pop(0)
    values = [ing.value for ing in dish]
    avg = statistics.mean(values)
    Avg_All.extend([name, avg])

print(Avg_All)  # 输出: ['Apple Pie', 1.5, 'Sugar Water', 0.5]

内容的提问来源于stack exchange,提问作者Daan Van de Wiel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 23:44:53