Python输出dict到新的json结构

2024-09-24 22:21:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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”街区之间 如果你有提示如何代码可以更好或更好的方式实现的结果,请让我有他们。你知道吗


Tags: 文件key代码importjsonvaluecode结构
2条回答

使用一些嵌套的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"
    }
   ]
  }
 }
]

享受:

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)

相关问题 更多 >