On 12/16/2009 1:32 PM J said...
Hi all,

I need some help in turning a list into a dictionary...

The list looks something like this:

['key1: data1','key2: data2','key3: data3',' key4: ',' \tdata4.1','
\tdata4.2',' \tdata4.3','key5: data5']

and it's derived from output (via subprocess.Popen) that in a terminal
would look like this:

key1: data1
key2: data2
key3: data3
key4:
        data4.1
        data4.2
        data4.3
key5: data5

So what I want to do is turn this into a dictionary that looks like this:

{'key1':'data1','key2':'data2','key3':'data3','key4':['data4.1','data4.2','data4.3'],'key5':'data5']

Sometimes brute force works fine...

>>> data = ['key1: data1','key2: data2','key3: data3',' key4: ',' \tdata4.1','\tdata4.2',' \tdata4.3','key5: data5']
>>>
>>> D = {}
>>>
>>> for datum in data:
...     parts = [ d.strip() for d in datum.split(":") ]
...     if len(parts) == 2:
...         if not(parts[1]):
...             priorList = []
...             D[parts[0]] = priorList
...         else:
...             D[parts[0]] = parts[1]
...     else:
...         priorList.append(parts[0])
...
>>> D
{'key3': 'data3', 'key2': 'data2', 'key1': 'data1', 'key5': 'data5', 'key4': ['data4.1', 'data4.2', 'data4.3']}
>>>




Flavor to taste,

Emile





So the problem I am having is just with the key 4 stuff... right now,
I'm looking at something like this (pseudocode because I'm still
trying to work this out)

loop through list
  if item is 'flags'
    make flags the key
    add every following item until item + 1 does not start with \t
  partition item where item[0] is key and item[2] is value

Sorry for not having actual code yet... I am still trying to work out
how to handle this on paper before actually writing code.

And no, it's not a homework assignment ;-) just a small part of a
project I'm working on.

Cheers,

Jeff


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to