On Apr 14, 9:37�am, "Sebastian Bassi" <[EMAIL PROTECTED]> wrote: > I have a two column list like: > > 2,131 > 6,335 > 7,6 > 8,9 > 10,131 > 131,99 > 5,10 > > And I want to store it in a tree-like structure. > So if I request 131, it should return all the child of 131, like 2, 10 > and 5 (since 5 is child of 10). > If I request 335, it should return: 6 and 7. > If I request 9, it should return 8. > I guess I could use tuples or dictionaries to do it, but I can't figure out > how.
There are probably better ways. def tree_path(key,tree,indent): print '\t'*indent,key if tree.has_key(key): for m in tree[key]: tree_path(m,tree,indent+1) return print 'original data' print source = [(2,131),(6,335),(7,6),(8,9),(10,131),(131,99),(5,10)] tree = {} for s in source: if tree.has_key(s[1]): tree[s[1]].append(s[0]) else: tree[s[1]] = [s[0]] for t in tree: print '%3d ' % (t),tree[t] print print tree_path(99,tree,0) print print 'extended data' print source_extend = [(666,2),(777,2),(888,2)] for s in source_extend: if tree.has_key(s[1]): tree[s[1]].append(s[0]) else: tree[s[1]] = [s[0]] for t in tree: print '%3d ' % (t),tree[t] print print tree_path(99,tree,0) ## original data ## ## 99 [131] ## 6 [7] ## 9 [8] ## 10 [5] ## 335 [6] ## 131 [2, 10] ## ## ## 99 ## 131 ## 2 ## 10 ## 5 ## ## extended data ## ## 2 [666, 777, 888] ## 99 [131] ## 6 [7] ## 9 [8] ## 10 [5] ## 335 [6] ## 131 [2, 10] ## ## ## 99 ## 131 ## 2 ## 666 ## 777 ## 888 ## 10 ## 5 > > Best, > SB. > > -- > Sebasti�n Bassi > Diplomado Ciencia y Tecnolog�a. > Club de la raz�n (www.clubdelarazon.org)
-- http://mail.python.org/mailman/listinfo/python-list