Hello, I am completely new to python and I have question that I unfortunately could not find in the various documentation online. My best guess is that the answer should be quitte easy but I have just enterd the learning phase so that means a hightend chance for stupidity and mistakes on my part.
I am trying to fill a nested dictionary from parsing a logfile. However each time there is only one key entry created and that's it. Just one entry, while the keys are different. That's 100% sure. I think therefore that it is an assignment error in my part. [there we have it...] To give an static example of the datastructure that I am using to clear any confusion on the datastructure part: records = { 'fam/jason-a' : { 'date' : 'Fri Sep 8 16:45:55 2006', 'from' : 'jason', 'subject' : 'Re: Oh my goes.....', 'msize' : '237284' }, 'university/solar-system' : { 'date' : 'Fri Sep 8 16:45:46 2006', 'from' : 'jd', 'subject' : 'Vacancies for students', 'msize' : '9387' } } Looping over this datastructure is no problem. rkeys = ['date', 'from', 'subject', 'msize'] for folder in records.keys(): print '--' print folder for key in rkeys: print records[folder][key] Now for the actual program/dynamic part - assignment in the loop I use the following function. Note `datum' is not a date object, just a string. def parselog(data): other = 0 records = {} for line in string.split(data, '\n'): str = line.strip() if str[:4] == 'From': mfrom, datum = extrfrom(str), extrdate(str) print datum, mfrom elif str[:4] == 'Fold': folder = extrfolder(str[8:]) records = {folder : { 'date' : datum, 'mesgbytes' : extrmsize(str[8:]), 'mesgcount' : 1}} else: other += 1 displrec(records) Note, this is not ment as a collision type datastructure, all initial data entries are unique. My question: Where is my assignment e.g. records = {folder.... wrong ? Thankx in advance for any tips, hints and answers. Cheers, Jason. -- http://mail.python.org/mailman/listinfo/python-list