On Mar 4, 10:55 am, mk <mrk...@gmail.com> wrote: > Sneaky Wombat wrote: > > I was going to write a def to loop through and look for certain pre- > > compiled regexs, and then put them in a new dictionary and append to a > > list, > > regexes are overkill in this case I think. > > > [ 'VLAN4065', > > 'Interface', > > 'Gi9/6', > > 'Po2', > > 'Po3', > > 'Po306', > > 'VLAN4068', > > 'Interface', > > 'Gi9/6', > > 'VLAN4069', > > 'Interface', > > 'Gi9/6',] > > Why not construct an intermediate dictionary? > > elems = [ 'VLAN4065', > 'Interface', > 'Gi9/6', > 'Po2', > 'Po3', > 'Po306', > 'VLAN4068', > 'Interface', > 'Gi9/6', > 'VLAN4069', > 'Interface', > 'Gi9/6',] > > def makeintermdict(elems): > vd = {} > vlan = None > for el in elems: > if el.startswith('VLAN'): > vlan = el.replace('VLAN','') > elif el == 'Interface': > vd[vlan] = [] > else: > vd[vlan].append(el) > return vd > > def makelist(interm): > finlist = [] > for k in interm.keys(): > finlist.append({k:interm[k]}) > return finlist > > if __name__ == "__main__": > intermediate = makeintermdict(elems) > print intermediate > finlist = makelist(intermediate) > print 'final', finlist > > {'4068': ['Gi9/6'], '4069': ['Gi9/6'], '4065': ['Gi9/6', 'Po2', 'Po3', > 'Po306']} > final [{'4068': ['Gi9/6']}, {'4069': ['Gi9/6']}, {'4065': ['Gi9/6', > 'Po2', 'Po3', 'Po306']}] > > I hope this is not your homework. :-) > > Regards, > mk
Thanks mk, My approach was a lot more complex than yours, but your's is better. I like itertools and was using islice to create tuples for (start,end) string slicing. Too much work though. Thanks! -j -- http://mail.python.org/mailman/listinfo/python-list