Skip to main content
 首页 » 编程设计

python之Django:如何将平面查询集处理为嵌套字典

2024年09月07日33duanxz

我有一个表格,其中的数据如下所示:

|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'], 
        }, 
    }, 
} 

请您参考如下方法:

您可以使用嵌套的 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)