for循环

mo49yndu  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(307)

我的目标是得到平均分
我使用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}

我想做的是创建一个字典,将idMap到一个值,比如 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 为了得到平均公里/小时
我一直在尝试为speed\u range\u id创建值字典,并将它们存储在一个变量中。我想我有必要做些假设陈述吗?
任何帮助或指导都将不胜感激。我的for循环当前如下所示:

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

7lrncoxx1#

宣布口述 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

相关问题