Преобразование списка dict (с 2 ключами/значениями) в один dict, где значение первого ключа является ключом второго значения

Я хочу сделать агрегацию и использовать аннотацию с Count (group by). Но я хотел бы преобразовать свой результат следующим образом

mygroupby = Mymodel.objects.all().values('field1').annotate(total=Count('field1'))
result = [wound_stat for wound_stat in wound_stats]

текущий результат

[
    {'field1': 'A', 'total': 1}, 
    {'field1': 'B', 'total': 4}, 
    {'field1': 'C', 'total': 2}, 
    {'field1': 'D', 'total': 2}, 
    {'field1': 'E', 'total': 2}
]

ожидаемый результат

{'A': 1, 'B': 4, 'C': 2, 'D': 2, 'E': 2}

какой способ лучше? с уважением

Я бы использовал values_list для получения списка кортежей:

mygroupby = Mymodel.objects.all().annotate(total=Count('field1')).values_list('field1', "total")

и выполнить окончательное преобразование в python:

result = {i[0]:i[1] for i in mygroupby}

это, вероятно, неоптимально, но достаточно просто, чтобы понять, что происходит

Вернуться на верх