我是 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])
我想我在这里遗漏了一些重要的东西,但似乎找不到下一步。
最佳答案
你很接近,我认为你需要用值构造一个 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/