python - Django:如何将平面查询集处理为嵌套字典?
问题描述
我有一个表格,其中的数据如下所示:
|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)
推荐阅读
- javascript - 从数组中获取可能的序列
- android - Dagger 2:当父母和孩子都有相同的注入签名时缺少提供者?
- kubernetes - Kubernetes 中的服务到 pod 通信中断
- html - Flexbox 宽度在浏览器中的表现不一致
- sql - SQL:结合总计数和条件计数
- android - 从文件管理器中读取 Android Nougat 中的 xls 、 xlsx 文件
- wolframalpha - Wolfram alpha 不允许我在高斯下绘制和显示阴影区域
- php - FFMPEG 生成一个空的主播放列表
- amazon-web-services - 有没有办法通过 Teradata TPT 脚本中的环境变量来处理 Amazaon S3 凭据
- java - executeBatch() 是否也清除命令列表?