I have a list of paths that need to be converted to a dict
["/company/accounts/account1/accountId=11111","/company/accounts/account1/accountName=testacc","/company/accounts/account1/environment=test","/company/accounts/account2/accountId=22222","/company/accounts/account2/accountName=stageacc","/company/accounts/account2/environment=stage","/program/releases/program1/stage/version=1.1","/program/releases/program1/stage/date=2021-02-01","/program/releases/program1/prod/version=1.0","/program/releases/program1/prod/date=2021-01-15",
]
Here is what it should look like:
{"company": {"accounts": {"account1": {"accountId": 11111,"accountName": "testacc","environment": "test"},"account2": {"accountId": 22222,"accountName": "stageacc","environment": "stage"}}},"program": {"releases": {"program1": {"stage": {"version": "1.1","date": "2021-02-01"},"prod": {"version": "1.0","date": "2021-01-15"}}}}
}
I am trying to solve this iteratively but I can't seem to get it to work. Not sure what is the right approach here when it comes to nested dictionaries.
Here is my code:
class Deserialize:def __init__(self):self.obj = {}def deserialize_iteratively(self, paths):def helper(path):path_elements = path.split('/')for e in path_elements[::-1]:if "=" in e:k,v = e.split("=")self.obj[k] = velse:tmp = {}tmp[e] = self.objself.obj = tmpreturn self.objfor path in paths:helper(path)return self.obj
And the erroneous output this generates with first two paths:
{'': {'company': {'accounts': {'account1': {'': {'company': {'accounts': {'account1': {'accountId': '11111'}}}},'accountName': 'testacc'}}}}}