所以让我说我有这本词典
{'Taylor Swift': ['Kanye West']}
由于有一个值(即'Kanye West')除以一个键(即'Taylor Swift')以获得1.0的平均值,我认为1.0是这样的。
让我说我有这本词典
{'Taylor Swift': ['Kanye West', 'Elvis Presley'], 'Adam Sandler': ['Johnny Depp', 'Tom Hanks']}
我希望平均值为2.0,因为有4个值除以2个键。
这是我尝试过的代码:
average = 0
sum = 0
for n in data:
sum = sum + n
average = sum / len(data)
我通过在线搜索尝试了许多其他方法,我得到的常见错误是:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
答案 0 :(得分:7)
将“平均值”作为“列表中的平均项目数”,您可以将其实现为:
average_length = sum( len(v) for v in data.values() ) / len(data)
第一部分将您拥有的所有列表的长度加在一起作为字典值,而len(data)
是您在字典中拥有的键:值对的数量。
答案 1 :(得分:2)
试试这个
average = 0
sum = 0
for key in data.keys():
sum = sum +len(data[key])
average = sum / len(data)
答案 2 :(得分:1)
average = 0
sum = 0
for v in data.values():
sum = sum + len(v)
average = sum / len(data.keys())
答案 3 :(得分:1)
使用简单的for循环
var= {'Taylor Swift': ['Kanye West', 'Elvis Presley'], 'Adam Sandler':
['Johnny Depp', 'Tom Hanks']}
sum = 0
for value in var.values():
sum = len(value)+sum
Average = sum/len(var)
print(Average)
<强>输出强>
2.0
答案 4 :(得分:0)
也可以在这里使用reduce:
from functools import reduce
data = {'Taylor Swift': ['Kanye West', 'Elvis Presley'], 'Adam Sandler': ['Johnny Depp', 'Tom Hanks']}
reduce((lambda x, y: len(x)+len(y)), data .values()) / len(data )
答案 5 :(得分:0)
首先获取值的长度,然后除以键的长度。
sum(len(i) for i in data.values())/float(len(data.keys()))
,这也给出了相同的结果,
sum(len(i) for i in x.values())/float(len(x))
答案 6 :(得分:0)
你去吧
#some dictionary
d={'Taylor Swift': ['Kanye',' West', 'Elvis',' Presley','l'], 'Adam Sandler': ['Johnny',' Depp', 'Tom',' Hanks']}
#Sum function gets the sum of all values in dictionary
#Len function gets the total number of keys in dictionary
#Multiplying with 1.0 to get exact division, else import division function from _future_ library
avg = sum(len(v) for v in d.itervalues())*1.0/len(d)
print avg