问个 Python 性能相关的
有很多个学校,具体就先用一千万吧,每个学校有很多个班级,每个班有很多组男女生(男女成对出现,男女生数量相等)。
现在要求每个班里的男女生的某个差,比如身高、年龄,只需要知道这里会有点耗时,最后按班级吧结果输出到文件
要求用 python 实现,对速度有要求
有很多个学校,具体就先用一千万吧,每个学校有很多个班级,每个班有很多组男女生(男女成对出现,男女生数量相等)。
现在要求每个班里的男女生的某个差,比如身高、年龄,只需要知道这里会有点耗时,最后按班级吧结果输出到文件
要求用 python 实现,对速度有要求
collect = collections.defaultdict(lambda: {
ㅤ’maleSum’: 0,
ㅤ’maleCount’: 0,
ㅤ’femaleSum’: 0,
ㅤ’femaleCount’: 0
})
for student in students:
ㅤif student[‘sex’]:
ㅤㅤcollect[student[‘class’]][‘maleSum’] += student[‘height’]
ㅤㅤcollect[student[‘class’]][‘maleCount’] += 1
ㅤelse:
ㅤㅤcollect[student[‘class’]][‘femaleSum’] += student[‘height’]
ㅤㅤcollect[student[‘class’]][‘femaleCount’] += 1
result = [
ㅤClass[‘maleSum’] / Class[‘maleCount’] – Class[‘femaleSum’] / Class[‘femaleCount’]
ㅤfor Class in collect.values()
]
测了测,百万级数据查询时间肯定不超过半秒,这还是用带键名的,如果把临时字典换成数组,估计还能再将快几倍,拆分数组类型到 numpy 然后开 numba,估计还能再快几倍,几十分钟居然就真等了。。。