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版本兼容