How to correct "TypeError: 'NoneType' object is not subscriptable" in recursive function?
This simply means that either tree
, tree[otu]
, or tree[otu][0]
evaluates to None
, and as such is not subscriptable. Most likely tree[otu]
or tree[otu][0]
. Track it down with some simple debugging like this:
def Ancestors (otu,tree):
try:
tree[otu][0][0]
except TypeError:
print otu, tre[otu]
raise
#etc...
or pdb
One of the values you pass on to Ancestors
becomes None
at some point, it says, so check if otu
, tree
, tree[otu]
or tree[otu][0]
are None
in the beginning of the function instead of only checking tree[otu][0][0] == None
. But perhaps you should reconsider your path of action and the datatype in question to see if you could improve the structure somewhat.