Victor Subervi wrote:


             printTree(aTree[name], level + 1)


...     print aTree([name], level + 1)
...
Traceback (most recent call last):
  File "<stdin>", line 4, in ?
TypeError: 'dict' object is not callable
>>>

Be cautious, you are now executing the same code !
Again, read carefully the error message, you tried to call a dictionary : aTree([name], level + 1)

the following code below works fine in a python 2.5 shell:

allTrees = [{'prodCat1': {}, 'prodCat2': {}}, {'presCat1': {}, 'presCat2': {}}]
level = 0
tree=[]
def printTree(allTrees, level=0):
   for aTree in allTrees:
       for name in sorted(aTree.keys()):
           print '\t' * level, name
           tree.append("%s%s" % ("\t" * level, name))
           printTree(aTree[name], level + 1)


In [9]: run ~/test.py

In [10]: printTree(allTrees)
prodCat1
prodCat2
presCat1
presCat2

In [11]: print tree
['prodCat1', 'prodCat2', 'presCat1', 'presCat2']

Though I'm not sure this is exactly want you want.
Anyway, there is a big probelm happening when  using the following value :
allTrees = [{'prodCat1': {'test':'success'}, 'prodCat2': {}}, {'presCat1': {}, 'presCat2': {}}]

printTree take a list in the first place, but when recursively calling printTree(aTree[name], level + 1), you pass a dictionary. Your code will fail as soon as the dictionary is not empty.

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

Reply via email to