[Tutor] references and popping, caveats?

mailing list ml.cyresse at gmail.com
Sun Aug 7 13:24:57 CEST 2005


Hi all, 

I have the following code - 
>>> j = 
"""a = {
b = {
c = {
d = 5
e = 10
}
}
}"""
>>> ref = []
>>> data = {}
>>> ref.append(data)
>>> for line in j.split('\n'):
... 	if "=" in line:
... 		(LHS, RHS) = line.split(" = ")
... 		if RHS == "{":
...                     #open group
... 			ref[-1][LHS] = {}
... 			ref.append(ref[-1][LHS])
... 		else:
... 			ref[-1][LHS] = RHS
... 	else:
...             #Only other value in test data is "}", so close group
... 		ref.pop(-1)

Fairly unreadable huh. Basically, I'm using the list to store
dictionary references, so as to create a bunch of nested dictionaries,
working on the principle of last in, first off.

I guess it's a rudimentary stack or thereabouts.

Basically, if there's any caveats with popping and/or lists of
references, I'm dead keen to find out before I take my prototype any
further.

Alternatively, if there's a far more simpler way to do this, also keen
to hear it. :)

(My first version had a list of keys ["a", "b", "c", "d"] and would
use that to track depth.

I then had a function which looked like this - 

if len(keyList) - 1 == -1:
    return
elif len(keyList) - 1 == 0:
   return fooDict[keyList[0]]
elif len(keyList) - 1 == 1:
 return fooDict[keyList[0]][keyList[1]]
...
...
elif len(keyList) -1 == 5:
 return fooDict[keyList[0]][keyList[1]][keyList[2]][keyList[3]][keyList[4]][keyList[5]]

And so forth.... Yuck. My very own coding WTF. )

Any help appreciated, 

Liam Clarke


More information about the Tutor mailing list