【问题标题】:Creating a new dictionary with same key and values averaged from another dictionary in Python [duplicate]在Python中创建一个具有相同键和值的新字典,该字典从另一个字典中取平均值[重复]
【发布时间】:2020-11-21 22:36:47
【问题描述】:

我有一个名为 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],

任何帮助将不胜感激......

谢谢!

【问题讨论】:

标签: python dictionary


【解决方案1】:

尝试这样做:

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])

【讨论】:

    【解决方案2】:

    您可以使用字典推导和自定义函数进行平均:

    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()}
    

    如果你真的想要一个平均值列表(如问题中所述):

    d2 = {k:[average(val)] for k, val in d1.items()}
    

    【讨论】:

    • 为什么不用statistics.mean??
    • @wwii 有很多方法可以做到这一点。但是至少使用这种方法(我认为),您可以更好地理解python的机制。 (就我个人而言,我是熊猫的粉丝,这就是我的做法:-))
    【解决方案3】:

    试试这个:

    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')"])
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多