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

时间:2017-02-20 18:29:54

标签: 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)])

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

有直接的方法吗?到目前为止,我唯一的想法是创建一个独特类别的列表:

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

我认为我在这里缺少一些重要的东西,但似乎无法找到下一步。

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

1 个答案:

答案 0 :(得分:3)

你很接近,我认为你需要用值来构造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}