цикл for в словаре идентификатора mysql со значениями - PullRequest
0 голосов
/ 17 октября 2018

Моя цель - получить среднее значение очков

Я использую цикл for для выполнения запроса mysql в python.Этот запрос возвращает следующие идентификаторы вместе с некоторыми значениями:

    {'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}

Что я хочу сделать, это создать словарь, который сопоставляет идентификатор со значением, скажем, speed_range_id:1 = 15km/hr, speed_range_id:2 = 25 km, speed_range_id:4 = 50 km/hr и так далее.

Я хотел бы затем умножить count(speed_range_id)': 1827 на значение, которое я дал идентификатору, в данном случае 1827*15 и так далее для каждого другого идентификатора.Затем мне нужно сложить результат каждого ID и разделить его на общую сумму отсчетов 1827+48+100+60=2035, чтобы получить среднее значение км / ч

Я застрял, пытаясь создатьсловарь значений для speed_range_id и хранить их в переменной.Я думаю, что это необходимо, я делаю некоторые заявления if?

Любая помощь или руководство приветствуются.Мой цикл for выглядит сейчас так:

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

1 Ответ

0 голосов
/ 17 октября 2018

Объявите 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...