使用Python最有效地遍历Json



我想确保最有效地迭代Json文件。似乎我有很多";对于";循环。可能是一种更好、更专业的方式,用一些";如果";条件目标是将json文件扁平化为自定义dict。

示例Json:

{
"Tier1": [
{
"Tier2_A": {"id": "11111"},
"Tier2_B": [],
"Tier2_C": [
{
"Sub_Tier_C1": {"id": "22222"},
"Sub_Tier_C2": [
{
"Id_1": "78965",
"Id_2": "28493",
},
{
"Id_1": "49382",
"Id_2": "434234",
}
]}

Python代码示例:

store = {}
jsonload = get_json_load()
for Tier1, Tier1_List in jsonload.items():
store[Tier1] = set()
for Tier1_Dict in Tier1_List:
if Tier1_Dict["Tier2_C"]:
for Tier1_Dict_Dict in Tier1_Dict["Tier2_C"]:
for Tier1_Dict_Dict_Dict in Tier1_Dict_Dict["Sub_Tier_C2"]:
if Tier1_Dict_Dict_Dict == "Id_1":
store[Tier1].add((Tier1_Dict["Tier2_A"]["id"], Tier1_Dict_Dict_Dict["Id_1"]))
elif Tier1_Dict_Dict_Dict == "Id_2":
store[Tier1].add((Tier1_Dict["Tier2_A"]["id"], Tier1_Dict_Dict_Dict["Id_2"]))
return store

试试这个

import json
data = json.load("/path/to/file.json")
tier1_tier2_c = {tier1["Tier2_A"]["id"], tier1["Tier2_C"]
for key, tier1 in data.items()}
result = { key, set((subtier["Id_1"], subtier["Id_2"])
for subtier in tier2_c["Sub_Tier_C2"]) 
for key, tier2_c in tier1_tier2_c.items()}

最新更新