我是Python的新手,遇到了一个我无法解决的问题,尽管有很多搜索和阅读相关帖子。任何帮助深表感谢: 我已将json文件导入到具有以下结构的字典中:
{
"23991": {
"5115": 10,
"2611": 22
},
"43223": {
"7252": 11,
"4302": 2
}
}
我想将它保存到具有以下结构的新json文件中:
[
{
"sni": {
"code": "23991",
"yrken": [
{
"code": "5115",
"antal": 10
},
{
"code": "2611",
"antal": 22
}
]
}
},
{
"sni": {
"code": "43223",
"yrken": [
{
"code": "7252",
"antal": 11
},
{
"code": "4302",
"antal": 11
}
]
}
}
]
到目前为止,我有这段代码:
import os
import sys
import json
pathSNI2Yrke = "Smallsni2Yrke.json"
with open(pathSNI2Yrke) as data_file:
sni2Yrke = json.load(data_file)
#print(sni2Yrke)
for key in sni2Yrke:
value = sni2Yrke[key]
d = [{"sni":
{"snicode": key,
"yrken": [{ "yrkecode":list(value.keys()),
"antal": list(value.values())}]}}]
j = json.dumps(d, indent=2)
#f = open('sample.json', 'w')
print ( j)
这给了我这个结果:
[
{
"sni": {
"snicode": "23991",
"yrken": [
{
"yrkecode": [
"5115",
"2611"
],
"antal": [
10,
22
]
}
]
}
}
]
[
{
"sni": {
"snicode": "43223",
"yrken": [
{
"yrkecode": [
"7252",
"4302"
],
"antal": [
11,
2
]
}
]
}
}
]
如你所见,这不是一个正确的json结构,而对于我的生活,我无法弄清楚如何使结构正确。输出一直回到根元素,所以我得到......] [...而不是......},{....在" sni"块 如果您有关于代码如何更好的提示或更好的方法来实现结果,请让我拥有它们。
答案 0 :(得分:1)
使用一些嵌套的comprehensions,您可以执行以下操作:
> d = {'43223': {'4302': 2, '7252': 11}, '23991': {'5115': 10, '2611': 22}}
> d2 = [
{'sni':
{'code': k1,
'yrken': [{'code': k2, 'antal': v2} for k2, v2 in v1.items()]
}
}
for k1, v1 in d.items()
]
> print json.dumps(d2, indent=1)
[
{
"sni": {
"code": "43223",
"yrken": [
{
"antal": 2,
"code": "4302"
},
{
"antal": 11,
"code": "7252"
}
]
}
},
{
"sni": {
"code": "23991",
"yrken": [
{
"antal": 10,
"code": "5115"
},
{
"antal": 22,
"code": "2611"
}
]
}
}
]
答案 1 :(得分:1)
享受:
result = []
for code, dct in your_json.items():
yrken = []
for c, antal in dct.items():
yrken.append({
"code": c,
"antal": antal
})
result.append({
"sni": {
"code": code,
"yrken": yrken
}
})
print(result)