Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python中另一个字典的相同键和平均值创建新字典_Python_Dictionary - Fatal编程技术网

使用Python中另一个字典的相同键和平均值创建新字典

使用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

我有一个名为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'):[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])