【发布时间】:2017-06-22 14:41:03
【问题描述】:
我有一个字典,其中包含多个键和值,并且值还包含键、值对。我没有得到如何在 python 中使用这个字典创建动态 json。这是字典:
image_dict = {"IMAGE_1":{"img0":"IMAGE_2","img1":"IMAGE_3","img2":"IMAGE_4"},"IMAGE_2":{"img0":"IMAGE_1", "img1" : "IMAGE_3"},"IMAGE_3":{"img0":"IMAGE_1", "img1":"IMAGE_2"},"IMAGE_4":{"img0":"IMAGE_1"}}
我的预期结果是这样的:
{
"data": [
{
"image": {
"imageId": {
"id": "IMAGE_1"
},
"link": {
"target": {
"id": "IMAGE_2"
},
"target": {
"id": "IMAGE_3"
},
"target": {
"id": "IMAGE_4"
}
}
},
"updateData": "link"
},
{
"image": {
"imageId": {
"id": "IMAGE_2"
},
"link": {
"target": {
"id": "IMAGE_1"
},
"target": {
"id": "IMAGE_3"
}
}
},
"updateData": "link"
},
{
"image": {
"imageId": {
"id": "IMAGE_3"
},
"link": {
"target": {
"id": "IMAGE_1"
},
"target": {
"id": "IMAGE_2"
}
}
},
"updateData": "link"
} ,
{
"image": {
"imageId": {
"id": "IMAGE_4"
},
"link": {
"target": {
"id": "IMAGE_1"
}
}
},
"updateData": "link"
}
]
}
我试图解决它,但我没有得到预期的结果。
result = {"data":[]}
for k,v in sorted(image_dict.items()):
for a in sorted(v.values()):
result["data"].append({"image":{"imageId":{"id": k},
"link":{"target":{"id": a}}},"updateData": "link"})
print(json.dumps(result, indent=4))
【问题讨论】:
-
json部分在这里完全(嗯,大部分)无关紧要,你的问题是“我如何将这个源字典转换成那个目标字典。 -
是的,你说得对@brunodesthuilliers
-
@rajendrapawar,您预期的 json 无效。 dict
.. "link": { "target": { "id": "IMAGE_2" }, "target": { "id": "IMAGE_3" }, "target": { "id": "IMAGE_4" } ..中不能有重复的键 -
@RomanPerekhrest 是的,我知道,但我只想这样
-
@rajendrapawar,你无法获得无效的结构,至少在 Python 中没有
标签: python json list dictionary dynamically-generated