python - 从python中的字典制作嵌套字典对象
问题描述
我正在尝试根据数据库查询结果在字典中构建响应对象。从查询结果看,我的数据是这样的。
data = [
{
"form": "form-name",
"path": "/errr",
"category": "cat1"
},
{
"form": "form-name",
"path": "/ddf/",
"category": "cat1"
},
{
"form": "form-name",
"path": "/qqq",
"category": "cat2"
},
{
"form": "form-name",
"path": "/www",
"category": "cat2"
},
]
我想制作另一个这样的数据集,请参阅示例。
[
{
"cat1" : [
{
"form": "form-name",
"path": "/kllk",
},
{
"form": "form-name",
"path": "/wer",
},
],
"cat2" : [
{
"form": "form-name",
"path": "/yuje",
},
{
"form": "form-name",
"path": "/tyyy",
},
]
}
]
到目前为止,我从第一个数据集中取出类别并将其存储在列表中并运行一个函数以使其成为唯一类别。
c = []
for d in data:
if d['category']:
c.append(d['category'])
# Function to make a unique category not to duplicate
def unique_value(value):
unique_value_string = []
myvalue = set(value)
for v in myvalue:
unique_value_string.append(v)
return unique_value_string
keys = unique_value(c)
k = keys
d = dict(zip(k, data))
#this is final result
{'cat2': {'form': 'form-name', 'path': '/errr', 'category': 'cat1'}, 'cat1': {'form': 'form-name', 'path': '/ddf/', 'category': 'cat1'}}
final keys: ['cat2', 'cat1']
如您所见,这是不正确的。请建议我任何更好的解决方案。
提前致谢
解决方案
尝试:
data = [
{"form": "form-name", "path": "/errr", "category": "cat1"},
{"form": "form-name", "path": "/ddf/", "category": "cat1"},
{"form": "form-name", "path": "/qqq", "category": "cat2"},
{"form": "form-name", "path": "/www", "category": "cat2"},
]
out = {}
for d in data:
out.setdefault(d["category"], []).append(d)
for d in out.values():
for v in d:
del v["category"]
print([out])
印刷:
[
{
"cat1": [
{"form": "form-name", "path": "/errr"},
{"form": "form-name", "path": "/ddf/"},
],
"cat2": [
{"form": "form-name", "path": "/qqq"},
{"form": "form-name", "path": "/www"},
],
}
]
推荐阅读
- javascript - 为什么更新strokeDasharray后需要更新strokeDashoffset?
- r - R Studio 中是否有使用纽约邮政编码创建交互式地图的功能?
- javascript - 是否可以在后台从桌面浏览器获取 GPS 位置?
- pycharm - 在 Pycharm 2019.2.4 中以控制台调试器模式覆盖变量而不使用 Evaluate 表达式
- c# - 用户控件 DependencyProperties 未更新,因为它们是引用
- java - 无法使用 group by 订阅
- java - 将字节数组转换为文件并下载
- c++ - 如何对一些结构进行选择排序
- python - 如何在列表中将大写字母转换为小写字母?
- npm - 将 Dist 目录放在 UWAMP 和 apache 服务器上