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
当您尝试对值进行求和时。