Composizione di bags

Le bag si possono comporre (nel senso di «appendere»), e le loro path si concatenano.

from gnr.core.gnrbag import Bag

bb=Bag()
bb['uno.due.tre'] = Bag(dict(a=1,b=2,c=3))

print bb['uno.due.tre']
>> 0 - (int) a: 1
>> 1 - (int) c: 3
>> 2 - (int) b: 2

print bb['uno.due.tre.a']
>> 1

Appendiamo la bag così creata ad una nuova e guardiamo cosa succede alla path:

cc=Bag()
cc['level1.level2'] = bb
print cc

>> 0 - (Bag) level1:
     0 - (Bag) level2:
        0 - (Bag) uno:
           0 - (Bag) due:
              0 - (Bag) tre:
                 0 - (int) a: 1
                 1 - (int) c: 3
                 2 - (int) b: 2

print cc['level1.level2.uno.due.tre.a']
>> 1

intermediate = cc['level1.level2.uno']
print intermediate
>> 0 - (Bag) due:
      0 - (Bag) tre:
         0 - (int) a: 1
         1 - (int) c: 3
         2 - (int) b: 2