Python:如何拆分值并按类别查找平均值

标签 python python-3.x dictionary

我是 Python 和编程的新手,正在努力理解一个问题。任何帮助是极大的赞赏。

我有一个值和类别的双端队列:

deque([(3000.0, category1), (6000.0, category1), (8000.0, category2), (3000.0, category3), (7000.0, category3), (4500.0, category3)])

我正在尝试使用字典按类别打印每个值的平均值。例如,类别 1 = (3000 + 6000)/2;类别 2 = 8000/1;类别 3 = (3000 + 7000 + 4500)/3。

有没有简单的方法来做到这一点?到目前为止,我唯一的想法是创建一个独特类别列表:

catetory_list = []
for i in deque:
    if i[1] not in category_list:
    category_list.append(i[1])

我想我在这里遗漏了一些重要的东西,但似乎找不到下一步。

我已经在这里发现了一些类似的问题,即 herehere ,但我正在努力研究如何使其适合我的问题。

最佳答案

你很接近,我认为你需要用值构造一个 dict。然后对之后的值进行平均:

示例数据:

my_dq = deque([
    (3000.0, 'category1'), (6000.0, 'category1'), (8000.0, 'category2'),
    (3000.0, 'category3'), (7000.0, 'category3'), (4500.0, 'category3')])

代码:

categories = {}
for i in my_dq:
    categories.setdefault(i[1], []).append(i[0])
categories = {k: sum(v) / len(v) for k, v in categories.items()}

结果:

{'category1': 4500.0, 'category3': 4833.3333, 'category2': 8000.0}

关于Python:如何拆分值并按类别查找平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42351856/

相关文章:

python-3.x - 我尝试在 anaconda 提示符和命令提示符中使用 'pip install tensorflow ' 安装tensorflow。它显示以下输出

python - range(i+1) 和 [0]*(i+1) 之间的区别

c# - 在 .NET 字典的情况下,双重散列如何工作?

python - 通过嵌套字典键获取唯一列表项

Python:将字典的所有值计算为z分数

python-3.x - 如何在Python 3中对大量文本进行分类?

python - 使用 try/except 处理多个绘图

Python 用 Pandas 压平多重嵌套字典 JSON

python - 合并 2 个 csv 文件 - html 编码

Python 循环没有给出预期的输出