[Tutor] Dictionary of dictionaries of dictionaries of lists. (original) (raw)
Alan Gauld alan.gauld at blueyonder.co.uk
Wed Jul 7 21:48:53 CEST 2004
- Previous message: [Tutor] Dictionary of dictionaries of dictionaries of lists.
- Next message: [Tutor] Config Files
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I have the following code:
""" import psycopg connection = psycopg.connect("dbname=blog user=m") cursor = connection.cursor() cursor.execute("SELECT id, date FROM blog") idx = cursor.fetchall() entries = {} for i in range(len(idx)):
Might make it slightly clearer if you use
for id in idx: entries[id[1].year] = ....
using a for loop with a range(len combo is usually wrong, either you would be better with a while or to iterate over the collection itself.
_entries[idx[i][1].year] = _ {idx[i][1].month : {idx[i][1].day : [].append(idx[i][0])}}
I'm not sure I understand this bit. You are creating a new dictionary with a single key which has another new dictionary also with a single key with a list with a single value?
Would a simple tuple not be a better solution?
Or are you (as I suspect you are) trying to add new entries to the existing ones? So that you can evaluate entries[2004][03][21] and get back a list?
I'm clearly doing something wrong. Something's missing, but what, and (more important) why? I might have stared myself blind on this problem by now, so I need a push. :-) Maybe even a rethink of it all.
The problem is you are creating a brand new dictionary each time and nuking the previous entry...
You need to add to the existing dictionary not replace it. Because you have such a deeply nested structure you will probably need to do this in multiple steps I suspect.
HTH,
Alan G.
- Previous message: [Tutor] Dictionary of dictionaries of dictionaries of lists.
- Next message: [Tutor] Config Files
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]