我是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])
我认为我在这里缺少一些重要的东西,但似乎无法找到下一步。
答案 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}