Help with parsing a list
Emile van Sebille
emile at fenx.com
Wed Dec 16 18:05:42 EST 2009
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
>
More information about the Python-list
mailing list