keys = ['a', 'a' ,'a' ,'b' ,'b' ,'c']
values = [2, 4, 6, 6, 4 ,3]

在这里,它是保证len(keys)==len(values).您还可以假定键已排序.我想创建一个字典,其中新值将是旧值的平均值.如果我这么做了

x = dict(zip(keys, values)) # {'a': 3, 'b': 4, 'c': 3}

这里的新值不是旧值的平均值.我期待着像这样的事情

{'a': 4, 'b': 5, 'c': 3}

我可以通过将每个旧值相加,除以相应键出现的次数来实现这一点,但我认为可能有一个更好的解决方案.任何 idea 都将不胜感激!

编辑:通过平均值,我的意思是:bkeys中出现了两次,值是64.在新词典中,它的值将是5.

推荐答案

我认为最干净的解决方案将是你建议的--按键分组,按长度求和,按长度划分.我猜基于数据帧的解决方案可能会更快,但我真的不认为这是足够的用法来证明增加外部库是合理的.

from collections import defaultdict

keys = ['a', 'a' ,'a' ,'b' ,'b' ,'c']
values = [2, 4, 6, 6, 4 ,3]

groups = defaultdict(list)

for k, v in zip(keys, values):
    groups[k].append(v)

avgs = {k:sum(v)/len(v) for k, v in groups.items()}

print(avgs) # {'a': 4.0, 'b': 5.0, 'c': 3.0}

Pandas 解决方案可供参考:

import pandas

keys = ['a', 'a' ,'a' ,'b' ,'b' ,'c']
values = [2, 4, 6, 6, 4 ,3]

df = pandas.DataFrame(zip(keys, values))

print(df.groupby(0).mean())

Python相关问答推荐

matplotlib图中的复杂箭头形状

ConversationalRetrivalChain引发键错误

提高算法效率的策略?

如何重新组织我的Pandas DataFrame,使列名成为列值?

如何关联来自两个Pandas DataFrame列的列表项?

与同步和异步客户端兼容的Python函数

极点用特定值替换前n行

Python:在cmd中添加参数时的语法

如何将参数名作为参数传入到函数中?

Parsel无法访问嵌套元素

如何仅使用数据帧操作获得特定的唯一数据帧组合?

判断字典键、值对是否满足用户定义的搜索条件

如何在保持sibling 姐妹美汤的同时插入和删除标签?

获取给出特定产品的所有可能组合的数量

如何从matplotlib中的Splter()中获取 colored颜色 条或图例?

如何在JAX中训练具有多输出(向量值)损失函数的梯度下降模型?

如何在Ubuntu上更新ChromeDriver二进制文件

在matplotlib中使用渐变 colored颜色 填充区域之间

PANDA TO_DICT-按键列出行(_D)

ImportError:在安装过程中找不到InstructorEmbedding的配置文件