python字典求平均值_查找字典中值的平均值

9 个答案:

答案 0 :(得分:5)

如果您使用numpy:

import numpy as np

np.array(list(dict.values())).mean()

答案 1 :(得分:4)

在Python 3.4中,有一个非常明确的方法:

import statistics

numbers = [G[key] for key in G]

mean_ = statistics.mean(numbers)

答案 2 :(得分:4)

要使用“简单for循环”,使用约束来使用dict方法:

G={'E': 18.0, 'D': 17.0, 'C': 19.0, 'B': 15.0, 'A': 0}

count = 0

_sum = 0

for key in G:

count += 1

_sum += G[key]

print('this is the mean: ', _sum/count)

答案 3 :(得分:3)

对字典的迭代会迭代其键。尝试使用for key in G,然后恰当地使用G[key]代替values。

或者,使用字典的iteritems()方法从G中获取key, value对,即:

d=[float(sum(values)) / len(values) for key, values in G.iteritems()]

(为了记录,你计算平均值的实际方法对我来说不合适,但你也可以先修复迭代问题。)

答案 4 :(得分:1)

使用G.values()从字典中获取所有值。

G = {'E': 18.0, 'D': 17.0, 'C': 19.0, 'B': 15.0, 'A': 0}

d = float(sum(G.values())) / len(G)

print (d)

这会打印13.8。

请注意,Python 2和Python 3之间存在差异。在Python 2中,G.values()是一个新构造的值列表。在Python 3中,它是一个生成器,可以被认为是一个“惰性列表”。在Python 2中,同样的事情被称为G.itervalues()。

答案 5 :(得分:0)

import numpy as np

np.mean(list(dict.values()))

答案 6 :(得分:0)

我建议而不是当前的答案是采用可重用且灵活的函数式编程范例。例如,创建一个函数来计算简单list中包含的dict值的任何统计信息:

def summarize_dict(dictionary, function):

dict_new = {}

for k,v in dictionary.items():

dict_new[k] = function(v)

return dict_new

测试:

import numpy as np

keys = ["a","b","c","d","e"]

values = [range(2),range(4),range(6),range(8),range(10)]

dictionary = dict(zip(keys, values))

summarize_dict(dictionary, np.mean)

收率:

{'a': 0.5, 'b': 1.5, 'c': 2.5, 'd': 3.5, 'e': 4.5}

答案 7 :(得分:0)

另一个for循环,这个不需要项目的计数器。

G = {'E': 18.0, 'D': 17.0, 'C': 19.0, 'B': 15.0, 'A': 0}

sum = 0

for k in G:

sum += float(G[k])

print "Mean: " + str(sum/len(G))

结果:

Mean: 13.8

[Finished in 0.3s]

实际上,根据您的数据,无需使用float。在我的结尾,删除float并且只是离开sum += G[k]仍然输出相同的值,因为值无论如何都不是字符串。

答案 8 :(得分:0)

你想:

mean = sum([G[key] for key in G])/float(len(G))

您的原始代码也会生成:

TypeError: 'int' object is not iterable

当您尝试对值进行求和时。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值