mysql id字典中具有值的for循环

2024-04-29 17:19:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是得到平均分

我使用for循环在python中执行mysql查询。此查询返回以下id以及一些值:

    {'speed_range_id': 0, 'count(speed_range_id)': 511}
{'speed_range_id': 1, 'count(speed_range_id)': 1827}
{'speed_range_id': 2, 'count(speed_range_id)': 48}
{'speed_range_id': 4, 'count(speed_range_id)': 100}
{'speed_range_id': 8, 'count(speed_range_id)': 60}

我想做的是创建一个字典,将id映射到一个值,比如speed_range_id:1 = 15km/hr, speed_range_id:2 = 25 km, speed_range_id:4 = 50 km/hr等等

然后我想将count(speed_range_id)': 1827乘以我给id的值,在本例中1827*15以此类推,然后我必须将每个id的结果相加,除以计数的总和1827+48+100+60=2035,以得出平均km/hr

我一直在尝试为speed\u range\u id创建值字典,并将它们存储在变量中。我觉得有必要做一些if语句

任何帮助或指导都将不胜感激。 我的for循环当前如下所示:

for rowdict in result:
    cursor2.execute(speed_query, rowdict)
    speed_result = cursor2.fetchall()
    for rowdict2 in speed_result:
        print(rowdict2)

Tags: inid目标for字典counthrrange
1条回答
网友
1楼 · 发布于 2024-04-29 17:19:47

声明一个dict id_vals来存储id和值的关联,以及speed_result,就像您已经在循环中一样。可以将sum与生成器表达式一起使用,以计算speed_result中每个元素的总和

id_vals = {1:15, 2:25, 4:50...}
result_sum = sum(id_vals[row['speed_range_id']]*row['count(speed_range_id)'] for row in speed_result)
count_sum = sum(row['count(speed_range_id)'] for row in speed_result)
avg = result_sum/count_sum

相关问题 更多 >