0

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

3
  • Can you please share the proper input string and what have you tried so far so that we can have you debug! Commented May 11, 2017 at 14:28
  • Please see How to Ask. You need to tell us what you've tried and what problems you have faced. SO is not a code writing service. Commented May 11, 2017 at 14:33
  • Try defaultdict to make a nested dictionary docs.python.org/2/library/collections.html Commented May 11, 2017 at 14:34

1 Answer 1

1

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)
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.