You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何访问并比较列表中多个字典的键?并生成包含对应值平均值的字典

计算多字典列表中各键值的平均值

嘿,这个需求我之前也碰到过,给你分享几个实用的实现思路,既能解决多字典键的访问问题,又能高效算出平均值~

首先先明确一个前提:你的案例里所有字典的键都是一致的,我先基于这个情况讲几个方法,最后再补充键不一致时的鲁棒性方案。

方法一:直观遍历法(适合新手理解)

先取出第一个字典的所有键,然后对每个键,遍历所有字典收集对应的值,最后计算平均值:

data = [
    {'clicks': 1.2195121951219512, 'conversions': 1.4227642276422763, 'cpc': 2.2357723577235773, 'cpm': 4.471544715447155, 'reach': 90.65040650406505},
    {'clicks': 1.2048192771084338, 'conversions': 1.4056224899598393, 'cpc': 2.208835341365462, 'cpm': 5.622489959839357, 'reach': 89.5582329317269}
]

# 获取所有键(因为所有字典键一致,取第一个即可)
keys = data[0].keys()
average_dict = {}

for key in keys:
    # 收集每个键对应的所有值
    values = [d[key] for d in data]
    # 计算平均值并存入结果字典
    average_dict[key] = sum(values) / len(values)

print(average_dict)

这个方法逻辑直白,每一步都很清晰,新手也能快速看懂。

方法二:字典推导式(Pythonic极简写法)

把上面的循环改成字典推导式,一行就能搞定,代码更简洁:

average_dict = {
    key: sum(d[key] for d in data) / len(data)
    for key in data[0].keys()
}

这种写法是Python里的惯用技巧,既简洁又高效,适合键完全一致的场景。

方法三:处理键不一致的鲁棒方案

如果你的字典列表里,有的字典可能缺少某些键,可以先用集合收集所有唯一的键,再逐个处理:

all_keys = set().union(*data)  # 收集所有字典的键,去重
average_dict = {}

for key in all_keys:
    # 只收集存在该键的字典的值
    values = [d[key] for d in data if key in d]
    if values:  # 避免空列表除以0的错误
        average_dict[key] = sum(values) / len(values)
    else:
        average_dict[key] = 0  # 或者根据你的需求设为None等

print(average_dict)

这个方法能应对更复杂的情况,不会因为个别字典缺少键而报错。

方法四:用defaultdict统一收集值

借助collections.defaultdict来先把所有键对应的值都收集到列表里,再统一计算平均值,逻辑也很清晰:

from collections import defaultdict

value_collector = defaultdict(list)

# 遍历所有字典,把每个键的值追加到对应的列表里
for d in data:
    for key, val in d.items():
        value_collector[key].append(val)

# 计算每个键的平均值
average_dict = {key: sum(vals)/len(vals) for key, vals in value_collector.items()}

这种方式也能自动处理键不一致的情况,而且代码可读性不错。

方法五:大数据量用pandas高效处理

如果你的字典列表数据量很大,或者平时习惯用pandas的话,这个方法最省心:

import pandas as pd

# 把列表转成DataFrame,然后直接计算均值,再转成字典
df = pd.DataFrame(data)
average_dict = df.mean().to_dict()

print(average_dict)

pandas会自动帮你处理所有键的均值计算,效率极高,代码也极简。


内容的提问来源于stack exchange,提问作者Shubham Sangle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 12:27:44