Steven, i think you got on the right track with your proposal, although i am not going after the "visual" represenatation that you were able to create, rather a structural one, i think this might work for me, instead of printing, i could be using my commands to make elements (instances of API objects to create my groups inside the file)
but one question i might have is : once i created first instance object which in my example is : groups = intance.add_group(str(name)) how would i temporary preserve this name as a reference for the next iteration for the subroups? On Tuesday, September 10, 2013 10:13:48 PM UTC-5, Steven D'Aprano wrote: > On Wed, 11 Sep 2013 02:24:44 +0000, Dave Angel wrote: > > > > > On 10/9/2013 22:14, Steven D'Aprano wrote: > > > > > >> On Tue, 10 Sep 2013 14:08:45 -0700, stas poritskiy wrote: > > >> > > >>> Greetings to all! > > >>> > > >>> i ran into a little logic problem and trying to figure it out. > > >>> > > >>> my case is as follows: > > >>> > > >>> i have a list of items each item represents a Group i need to create a > > >>> set of nested groups, so, for example: > > >>> > > >>> myGroups = ["head", "neck", "arms", "legs"] > > >> > > >> > > >> What is the rule for grouping these items? Below, you suggest: > > >> > > >> head encloses neck > > >> neck encloses arms > > >> arms encloses legs > > >> > > >> which seems rather strange. But if it is *always* the case that each > > >> item encloses the next item: > > >> > > >> def print_nested_list(alist): > > >> spaces = ' '*4 > > >> for level, item in enumerate(alist): > > >> if level != 0: > > >> indent = spaces*(level-1) + ' ' > > >> print (indent + '|_>'), # note comma > > >> print item > > >> > > >> > > >> which gives us this: > > >> > > >> py> print_nested_list(['head', 'neck', 'arms', 'legs']) head > > >> |_> neck > > >> |_> arms > > >> |_> legs > > >> > > >> > > >> as requested. > > >> > > >> > > >> > > > Very nice. But what I want to know is how did you know that Stan (the > > > OP) wanted his printed output to be formatted that way? > > > > I don't. Stan's email is unclear. But he does show an example: > > > > [quote] > > so, for example: > > > > myGroups = ["head", "neck", "arms", "legs"] > > > > i need to get them to be represented like this: (if you can imaging a > > folder structure) > > > > head > > |_> neck > > |_> arms > > |_>legs > > > > and so on until i hit the last element. > > [end quote] > > > > > > so I just provided that. > > > > > He said: > > > > > >>>>>> i need to create a set of nested groups, > > > and > > >>>>>> store each of the first elements of a par, so I can reference to > > >>>>>> them as to a parent of another group. > > > > > > I have no idea what that means :-) > > > > > > I *guess* that what Stan is actually looking for is something like a > > dictionary-based solution, not lists: > > > > {'head': {'neck': {'arms': {}, 'legs': {}}}} > > > > which gives: > > > > head encloses neck > > neck encloses arms and legs > > arms enclose nothing > > legs enclose nothing > > > > > > or: > > > > {'head': {'neck': {'arms': {'legs': {}}}}} > > > > which gives: > > > > head encloses neck > > neck encloses arms > > arms encloses legs > > legs enclose nothing > > > > > > but I can't really tell for sure. In this second case, using dicts, I > > might try something like this recursive solution: > > > > > > def print_nested_dict(adict, level=0): > > if adict == {}: > > return > > for key, subdict in sorted(adict.items()): > > if level != 0: > > spaces = ' '*4 > > indent = spaces*(level-1) + ' ' > > print (indent + '|_>'), # note comma > > if subdict == {}: > > print key > > else: > > print "%s:-" % key > > print_nested_dict(subdict, level+1) > > > > > > Given: > > > > d = {'head': {'neck': {'legs': {'toes': {}}, 'arms': {'thumbs': {}, > > 'fingers': {}}}}} > > > > we can see this output: > > > > py> print_nested_dict(d) > > head:- > > |_> neck:- > > |_> arms:- > > |_> fingers > > |_> thumbs > > |_> legs:- > > |_> toes > > > > > > > > > > -- > > Steven -- https://mail.python.org/mailman/listinfo/python-list