dictionary= {
'49622150': {
'exam2': '45',
'homework': '64',
'project': '15',
'id': '49622150',
'attendance': '39',
'project2': '62',
'exam1': '75'
},
'62138834': {
'exam2': '74',
'homework': '100',
'project': '90',
'id': '62138834',
'attendance': '75',
'project2': '33',
'exam1': '30'
},
'91183775': {
'exam2': '73',
'homework': '39',
'project': '77',
'id': '91183775',
'attendance': '59',
'project2': '53',
'exam1': '86'
}
}
这就是我尝试的但我不知道如何找到密钥并将这些东西转换为整数而不是平均值。
d={}
def examStats(dictionary):
for word in dictionary:
if word == 'exam:
d['exam']=int(str('exam'))/2?
print d
输出将是以下字典:
{"exam1": {"average": 58, "median": 60, "range":78}, "exam2": {"average": 65, "median": 69, "range":54}}
答案 0 :(得分:0)
您可以使用for k, v in dictionary.items()
循环字典。例如:
if __name__ == '__main__':
for k, v in dictionary.items():
print int(v['exam1'])
print int(v['exam2'])
答案 1 :(得分:0)
from collections import defaultdict
d = defaultdict(list)
for dic in [dics for dics in dictionary.values()]:
for k,v in dic.items():
d[k].append(int(v))
print(dict(d))
出:
{'attendance': [59, 75, 39],
'exam1': [86, 30, 75],
'exam2': [73, 74, 45],
'homework': [39, 100, 64],
'id': [91183775, 62138834, 49622150],
'project': [77, 90, 15],
'project2': [53, 33, 62]}
现在,你可以做任何你需要的事情
答案 2 :(得分:0)
from collections import defaultdict
import numpy as np
d_dict = defaultdict(list)
dictionary = {'49622150': {'exam2': '45', 'homework': '64', 'project': '15', 'id': '49622150', 'attendance': '39', 'project2': '62', 'exam1': '75'}, '62138834': {'exam2': '74', 'homework': '100', 'project': '90', 'id': '62138834', 'attendance': '75', 'project2': '33', 'exam1': '30'}, '91183775': {'exam2': '73', 'homework': '39', 'project': '77', 'id': '91183775', 'attendance': '59', 'project2': '53', 'exam1': '86'}}
for k,v in dictionary.items():
for i,j in v.items():
d_dict[i].append(int(j))
keys = ['exam1','exam2']
d = {}
for k in keys:
d[k] = { 'Average' : np.mean(d_dict[k]), 'Median' : np.median(d_dict[k]) ,'Range' : np.ptp(d_dict[k]) }
print d
输出:
{'exam2': {'Average': 64.0, 'Median': 73.0, 'Range': 29}, 'exam1': {'Average': 63.666666666666664, 'Median': 75.0, 'Range': 56}}