newbie: datastructure `dictionary' question

jason jisis at notmal.com
Sat Sep 9 11:15:18 EDT 2006


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.



More information about the Python-list mailing list