使用Python中另一个字典的相同键和平均值创建新字典
我有一个名为StudentGrad的现有词典,其数据类型如下:使用Python中另一个字典的相同键和平均值创建新字典,python,dictionary,Python,Dictionary,我有一个名为StudentGrad的现有词典,其数据类型如下: ('Aditya','male','senior'):[0.83,0.87,0.82,0.83], ('Varun','male','senior'):[0.76,0.86,0.88,0.79], ('Shantanu','male','senior'):[0.79,0.81,0.78,0.78], 我想创建一个名为studentAvg的新字典,它具有相同的键,但返回值的平均等级: ('Aditya','male','senior
('Aditya','male','senior'):[0.83,0.87,0.82,0.83],
('Varun','male','senior'):[0.76,0.86,0.88,0.79],
('Shantanu','male','senior'):[0.79,0.81,0.78,0.78],
我想创建一个名为studentAvg的新字典,它具有相同的键,但返回值的平均等级:
('Aditya','male','senior'):[0.84],
('Varun','male','senior'):[0.82],
('Shantanu','male','senior'):[0.79],
任何帮助都将不胜感激
谢谢 您可以使用dict理解和自定义函数进行平均:
d1 = {('Aditya','male','senior'):[0.83,0.87,0.82,0.83],
('Varun','male','senior'):[0.76,0.86,0.88,0.79],
('Shantanu','male','senior'):[0.79,0.81,0.78,0.78],
}
def average(list_values):
"let's assume you want an arithmetic mean"
return sum(list_values) / len(list_values)
d2 = {k:average(val) for k, val in d1.items()}
如果你真的想要一份平均值列表(如问题中所述):
试试这个:
studentAvg = {
('Aditya','male','senior'):sum(studendGrad["('Aditya','male','senior')"])/len(studendGrad["('Aditya','male','senior')"]),
('Varun','male','senior'):sum(studentGrad["(Varun','male','senior')"])/len(studentGrad["('Varun','male','senior')"]),
('Shantanu','male','senior'):sum(studentGrad["('Shantanu','male','senior')"]/len(studentGrad["('Shantanu','male','senior')"])
}
尝试这样做:
x = {('Aditya','male','senior'):[0.83,0.87,0.82,0.83],
('Varun','male','senior'):[0.76,0.86,0.88,0.79],
('Shantanu','male','senior'):[0.79,0.81,0.78,0.78]}
def average(data):
sum = 0
for elem in data:
sum+=elem
result = sum/len(data)
return result
y = {}
for elem in x:
y[elem] = average(x[elem])
为什么你的平均数是单元素列表而不是一个数字呢?欢迎来到这里。这不是一个讨论论坛或教程。请花点时间阅读和阅读该页面上的其他链接。花些时间练习这些例子。它会让你了解Python提供的帮助你解决问题的工具。回答了你的问题吗?为什么不使用???@wwii有很多方法。但至少通过这种方法(我认为),您可以更好地理解python的机制。(就个人而言,我是熊猫的粉丝,我会这样做:-)
x = {('Aditya','male','senior'):[0.83,0.87,0.82,0.83],
('Varun','male','senior'):[0.76,0.86,0.88,0.79],
('Shantanu','male','senior'):[0.79,0.81,0.78,0.78]}
def average(data):
sum = 0
for elem in data:
sum+=elem
result = sum/len(data)
return result
y = {}
for elem in x:
y[elem] = average(x[elem])