Я новичок в python, и мне нужно создать дерево на основе файла json.
У меня есть файл json, который выглядит следующим образом:
[
{"category": "Vehicle","parent_category": null},
{"category": "Bicycle","parent_category": "Vehicle"},
{"category": "One-wheeled bicycle","parent_category": "Bicycle"},
{"category": "Two-wheeled bicycle","parent_category": "Bicycle"},
{"category": "Motor vehicle","parent_category": "Vehicle"},
{"category": "Motorcycle","parent_category": "Motor vehicle"},
{"category": "Car","parent_category": "Motor vehicle"},
{"category": "Truck","parent_category": "Motor vehicle"},
{"category": "Bus","parent_category": "Motor vehicle"},
{"category": "Aircraft","parent_category": "Vehicle"},
{"category": "Airplane","parent_category": "Aircraft"},
{"category": "Helicopter","parent_category": "Aircraft"},
{"category": "Spacecraft","parent_category": "Vehicle"},
{"category": "Railed vehicle","parent_category": "Vehicle"},
{"category": "Train","parent_category": "Railed vehicle"},
{"category": "Tram","parent_category": "Railed vehicle"},
{"category": "Watercraft","parent_category": "Vehicle"},
{"category": "Ship","parent_category": "Watercraft"},
{"category": "Boat","parent_category": "Watercraft"}
]
Мне нужно создатьдерево, основанное на отношениях, данных из файла json. Как:
{'Vehicle':{'Aircraft':{'Airplane':{},'Helicopter':{},
{'Bicycle':{'One-wheeled bicycle':{}...
У меня есть следующий код:
import pprint
import json
lists = []
f = open('vechicles.json')
data = json.load(f)
f.close()
for i in range(len(data)):
lists.append([data[i]['category'],data[i]['parent_category']])
def formTree(list):
tree = {}
for item in list:
currTree = tree
for key in item[::-1]:
if key not in currTree:
currTree[key] = {}
currTree = currTree[key]
return tree
pprint.pprint(formTree(lists))
, который производит следующий вывод:
{None: {'Vehicle': {}},
'Aircraft': {'Airplane': {}, 'Helicopter': {}},
'Bicycle': {'One-wheeled bicycle': {}, 'Two-wheeled bicycle': {}},
'Motor vehicle': {'Bus': {}, 'Car': {}, 'Motorcycle': {}, 'Truck': {}},
'Railed vehicle': {'Train': {}, 'Tram': {}},
'Vehicle': {'Aircraft': {},
'Bicycle': {},
'Motor vehicle': {},
'Railed vehicle': {},
'Spacecraft': {},
'Watercraft': {}},
'Watercraft': {'Boat': {}, 'Ship': {}}}
Это почти то, что я хочу достичь,но это не хорошоЧто я делаю не так?