Django: как обработать плоский набор запросов во вложенный словарь? - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть таблица с данными, похожими на эту:

|Country|State|City |Street|
|-------|-----|-----|------|
|  USA  | AZ  |city1| str1 |
|  USA  | AZ  |city1| str2 |
|  USA  | AZ  |city2| str1 |
|  USA  | AZ  |city2| str3 |
|  USA  | MN  |city3| str4 |
|  MEX  | CH  |city4| str5 |
|  MEX  | CH  |city4| str6 |

Как правильно преобразовать это во вложенный словарь?Я ожидаю, что результат будет выглядеть так:

nested_dict = {
    'USA':{
        'AZ':{
            'city1':['str1','str2'],
            'city2':['str1','str3'], 
        },
        'MN':{
            'city3':['str3','str4'], 
        },
    },
    'MEX':{
        'CH':{
            'city4':['str5','str6'],
        },
    },
}

1 Ответ

0 голосов
/ 20 сентября 2018

Вы можете использовать вложенные defaultdict:

from collections import defaultdict as dd

nested_dict = dd(lambda: dd(lambda: dd(list)))
for m in model.objects.all():
    nested_dict[m.Country][m.State][m.City].append(m.Street)
...