/ / Pandas Create Dict in tief verschachtelten JSON - Python, JSON, Wörterbuch

Pandas Create Dict in tief verschachtelten JSON - Python, JSON, Wörterbuch

Ich habe Probleme beim Ändern meines Codes, um ein weiteres Wörterbuch zum Trennen hinzuzufügen "hostNumber" und "hostMode" in meiner Ausgabe. Unten ist der gefundene Code Hier und manipuliert:

import json
from json import dumps

top = "Top_Level"
top_dict = {}
top_dict["name"] = top
top_dict["sub_name"] = []
for site, site_data in df.groupby("site", sort=False):
site_dict = {}
site_dict["site"] = site
site_dict["sub_site"] = []
for stor, stor_data in site_data.groupby("system", sort=False):
stor_dict = {}
stor_dict["system"] = stor
stor_dict["sub_system"] = []
for port, port_data in stor_data.groupby("portId", sort=False):
port_dict = {}
port_dict["portId"] = port
port_dict["sub_portId"] = []
for host, host_data in port_data.groupby("hostName", sort=False):
host_data = host_data.drop(["portId", "system",
"site"], axis=1).set_index(
"hostName")
for n in host_data.to_dict(orient="records"):
port_dict["sub_portId"].append({"hostName": host,
"sub_hostName": [n]})

stor_dict["sub_system"].append(port_dict)
site_dict["sub_site"].append(stor_dict)
top_dict["sub_name"].append(site_dict)
top_out = dumps(top_dict)
parsed = json.loads(top_out)

ergebend:

print(json.dumps(parsed, indent=4, sort_keys=True))

{
"name": "Top_Level",
"sub_name": [
{
"site": "A",
"sub_site": [
{
"system": "system01",
"sub_system": [
{
"portId": "1-A",
"sub_portId": [
{
"hostName": "ahost005",
"sub_hostName": [
{
"hostNumber": "1",
"hostMode": "WIN"
}
]
}, ...

Wie kann ich meinen Code so ändern, dass er folgendermaßen ausgegeben wird:

                                ...
"sub_hostName": [
{"hostNumber": "1"},
{"hostMode": "WIN"}
]...

Antworten:

0 für die Antwort № 1

Verwenden Sie die folgende Zeile anstelle von "sub_hostName": [n]:

"sub_hostName": [dict([i]) for i in n.items()]