Reputation: 13
How to convert string DS into nested dictionary DD using Python code
ds = '''TTTT.0.OOOO.UUUU.OOOO.PPPP.DDDD.1-1
date = 2012
time = 12
size = 558
maths = mediaTTTT.1.OOOO.UUUU.OOOO.PPPP.DDDD.1-1
date = 2012
time = 12
size = 558
maths = mediaTTTT.2.OOOO.UUUU.OOOO.PPPP.DDDD.1-1
date = 2012
time = 12
size = 1024
maths = mediaTTTT.3.OOOO.UUUU.OOOO.PPPP.DDDD.1-1
date = 2012
time = 12
size = 1024
maths = mediaTTTT.4.OOOO.UUUU.OOOO.PPPP.DDDD.1-1
date = 2012
time = 12
size = 1024
maths = media'''dd = {'TTTT.0.OOOO.UUUU.OOOO.PPPP.DDDD.1-1': {'date': '2012', 'time': '12', 'size': '558', 'maths': 'media'},
'TTTT.1.OOOO.UUUU.OOOO.PPPP.DDDD.1-1': {'date': '2012', 'time': '12', 'size': '558', 'maths': 'media'},
'TTTT.2.OOOO.UUUU.OOOO.PPPP.DDDD.1-1': {'date': '2012', 'time': '12', 'size': '1024', 'maths': 'media'},
'TTTT.3.OOOO.UUUU.OOOO.PPPP.DDDD.1-1': {'date': '2012', 'time': '12', 'size': '1024', 'maths': 'media'},
'TTTT.4.OOOO.UUUU.OOOO.PPPP.DDDD.1-1': {'date': '2012', 'time': '12', 'size': '1024', 'maths': 'media'}
}
I use racadm(dell cmd bios) to get the return, and the result is DS. Many methods are not translated into nested dictionaries, so I ask for help here
Upvotes: 0
Views: 1088
Reputation: 1947
Try this:
>>> ds = '''TTTT.0.OOOO.UUUU.OOOO.PPPP.DDDD.1-1
... date = 2012
... time = 12
... size = 558
... maths = mediaTTTT.1.OOOO.UUUU.OOOO.PPPP.DDDD.1-1
... date = 2012
... time = 12
... size = 558
... maths = mediaTTTT.2.OOOO.UUUU.OOOO.PPPP.DDDD.1-1
... date = 2012
... time = 12
... size = 1024
... maths = mediaTTTT.3.OOOO.UUUU.OOOO.PPPP.DDDD.1-1
... date = 2012
... time = 12
... size = 1024
... maths = mediaTTTT.4.OOOO.UUUU.OOOO.PPPP.DDDD.1-1
... date = 2012
... time = 12
... size = 1024
... maths = media'''
>>> {'TTTT'+rec[0]: dict(t.split(' = ') for t in rec[1:]) for rec in [item.split('\n') for item in ds.split('TTTT') if item != '']}
{'TTTT.3.OOOO.UUUU.OOOO.PPPP.DDDD.1-1': {'size': '1024', 'maths': 'media', 'time': '12', 'date': '2012'}, 'TTTT.1.OOOO.UUUU.OOOO.PPPP.DDDD.1-1': {'size': '558', 'maths': 'media', 'time': '12', 'date': '2012'}, 'TTTT.0.OOOO.UUUU.OOOO.PPPP.DDDD.1-1': {'size': '558', 'maths': 'media', 'time': '12', 'date': '2012'}, 'TTTT.4.OOOO.UUUU.OOOO.PPPP.DDDD.1-1': {'size': '1024', 'maths': 'media', 'time': '12', 'date': '2012'}, 'TTTT.2.OOOO.UUUU.OOOO.PPPP.DDDD.1-1': {'size': '1024', 'maths': 'media', 'time': '12', 'date': '2012'}}
Without List Comprehensions for better readability:
res = {}
for item in ds.split('TTTT'):
if item != '':
rec = item.split('\n')
res['TTTT'+rec[0]] = dict(t.split(' = ') for t in rec[1:])
print(res)
Upvotes: 1