嵌套字典中的值的总和

时间:2018-06-03 19:01:34

标签: python dictionary nested

student={"aman":{"math":90,
             "english":92,
             "science":99},
     "verma":{"math":80,
              "english":87,
              "science":70}}

我需要找到每个键的值的总和(例如“aman”= 90 + 92 + 99),该怎么做?

以及如何找到得分最高的学生的姓名?

3 个答案:

答案 0 :(得分:2)

使用dict理解创建一个包含总结的新词典:

dct_sum = {k: sum(v.values()) for k, v in student.items()}

# {'aman': 281, 'verma': 237}

找到总数最高的学生:

max(dct_sum, key=dct_sum.get)
# aman

答案 1 :(得分:0)

使用列表理解和dict()

<强>演示:

student={"aman":{"math":90,
             "english":92,
             "science":99},
     "verma":{"math":80,
              "english":87,
              "science":70}}

print([sum(student[i].values()) for i in student])
print(dict((i, sum(student[i].values())) for i in student))

<强>输出:

[281, 237]
{'aman': 281, 'verma': 237}

答案 2 :(得分:0)

使用熊猫:

import pandas as pd

student={"aman":{"math":90,
                 "english":92,
                 "science":99},
         "verma":{"math":80,
                  "english":87,
                  "science":70}}

df = pd.DataFrame.from_records(student)
print (df.sum())

结果:

aman     281
verma    237

或者如果你想要一个额外行的表:

import pandas as pd

student={"aman":{"math":90,
             "english":92,
             "science":99},
     "verma":{"math":80,
              "english":87,
              "science":70}}

df = pd.DataFrame.from_records(student)
df.loc['Total']= df.sum()
print (df)

结果:

         aman  verma
english    92     87
math       90     80
science    99     70
Total     281    237