Python 你觉得一本字典的平均值是多少?

Python 你觉得一本字典的平均值是多少?,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,假设我有这本字典 {'Taylor Swift': ['Kanye West']} {'Taylor Swift': ['Kanye West', 'Elvis Presley'], 'Adam Sandler': ['Johnny Depp', 'Tom Hanks']} 我认为这是1.0,因为有一个值(即“Kanye West”)除以一个键(即“Taylor Swift”),得到1.0的平均值 假设我有这本字典 {'Taylor Swift': ['Kanye West']} {'Ta

假设我有这本字典

{'Taylor Swift': ['Kanye West']}
{'Taylor Swift': ['Kanye West', 'Elvis Presley'], 'Adam Sandler': ['Johnny Depp', 'Tom Hanks']}
我认为这是1.0,因为有一个值(即“Kanye West”)除以一个键(即“Taylor Swift”),得到1.0的平均值

假设我有这本字典

{'Taylor Swift': ['Kanye West']}
{'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'
将“平均”作为“列表中项目的平均数量”,您可以通过以下方式实现:

average_length = sum( len(v) for v in data.values() ) / len(data)
第一部分将作为字典值的所有列表的长度相加,而
len(data)
是字典中键:值对的数目。

使用simple 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
试试这个

average = 0
sum = 0
for key in data.keys():
    sum = sum +len(data[key])
average = sum / len(data)

这里也可以使用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 )

首先获取值的长度并将其除以键的长度

sum(len(i) for i in data.values())/float(len(data.keys()))
这也给出了同样的结果

sum(len(i) for i in x.values())/float(len(x))
给你

#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 

“average”是指词典中值的平均长度(即列表中的平均项数)?
list
在python中是一个类型名,不应将其用作变量名(除此之外,
list
可能不是词典的好名称……)哦,很抱歉,我这么做只是为了他的参考。但是感谢你告诉我,你可以使用float(len(data))来获取Python3的浮点值结果,这是不必要的(这是我最初的假设),尽管我可能应该从将来添加除法的导入,以使代码与这两个python版本兼容