python - 从字典列表中优化平均计算

标签 python numpy

我有一个字典列表,键为“a”、“n”、“o”、“u”。 有没有办法加快这个计算,例如 NumPy ?列表中有数万个项目。

数据是从数据库中提取的,所以我必须接受它最初是以字典列表的形式存在的。

x = n = o = u = 0
for entry in indata:
    x += (entry['a']) * entry['n']  # n - number of data points
    n += entry['n']
    o += entry['o']
    u += entry['u']

    loops += 1

average = int(round(x / n)), n, o, u

最佳答案

我怀疑这会快得多,但我想它是 timeit 的候选者...

from operator import itemgetter
x = n = o = u = 0
items = itemgetter('a','n','o','u')
for entry in indata:
    A,N,O,U = items(entry)
    x += A*N  # n - number of data points
    n += N
    o += O    #don't know what you're doing with O or U, but I'll leave them
    u += U

average = int(round(x / n)), n, o, u

至少,它保存了对 entry['n'] 的查找,因为我现在已经将它保存到一个变量中

关于python - 从字典列表中优化平均计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13014452/

相关文章:

python - Tornado 大文件下载

python - 如何在 Numpy Array 和 Pandas Dataframe 之间进行映射?

python - 矩阵计算产生的 numpy 数组中的舍入值

python - 使用 ValueError : A 2-dimensional array must be passed 定义复数列表中的最短对

python - PyQt 多个 tablewidgets 和 tabwidgets

python:过滤几乎相同文本的算法

python - Tornado -redis : RPOP works but BRPOP doesn't?

python - 如何使用 pip 安装带有额外组件的本地 Python 包?

python - 在python中获取具有相同值的所有行?

python - 在 pandas dataframe 中随机引入 NaN 值