I have another question. How would like to be able to add the contents on the values for one key.
key['20001']:[978, 345] How can I do this? Thanks, Ron On Thu, Aug 28, 2008 at 11:56 AM, Bruno Desthuilliers <[EMAIL PROTECTED]> wrote: > norseman a écrit : > >> Terry Reedy wrote: >> >>> >>> >>> Ron Brennan wrote: >>> >>>> Hello, >>>> How would I create a dictionary that contains multiple values for one >>>> key. >>>> >>> >>> Make the value a collection object (set or list if you plan to add and >>> delete). >>> >>> I'd also like the key to be able to have duplicate entries. >>>> >>> >>> Dict keys must be hashable and unique. >>> >>> tjr >>> >>> -- >>> http://mail.python.org/mailman/listinfo/python-list >>> >>> ================ >> First part I understand, second is still giving me a problem. >> >> For some reason I still want keys to be dbf column headers. >> like: >> >> name:address:zip so forth >> ---- ------- --- ------------------ >> guy: unknown:00000 >> girl: 123 tiny street:12345 >> boy:321 here:33333 >> gal:999 over there: 55555 >> so forth >> >> Thus one key has many values. And you can then index on whatever key(s) >> you wish - name,zip... >> > > You can either use 1/ a list of dicts, or 2/ a dict mapping keys to lists. > > 1/ > records = [ > {"name":"guy", "address":"unknown","zip":"00000"}, > {"name":"girl", "address":"123 tiny street","zip":"12345"}, > {"name":"boy", "address":"321 here","zip":"33333"}, > {"name":"gal", "address":"999 over there","zip":"55555"}, > ] > > keys = ("name", "address", "zip") > > print ":".join(keys) > print "-" * len(":".join(keys)) > for record in records: > data = [record[key] for key in keys] > print ":".join(data) > > > 2/ > records = dict( > name=["guy", "girl", "boy", "gal"], > address=["unknown","123 tiny street","321 there","999 over there"], > zip=["00000", "12345", "33333", "55555"] > ) > > keys = ("name", "address", "zip") > nb_records = len(records[keys[0]]) > > print ":".join(keys) > print "-" * len(":".join(keys)) > for i in xrange(nb_records): > data = [data[key][i] for key in keys] > print ":".join(data) > > > You are of course entitled the right to prefer the second solution, but > then I hope I'll never have to maintain your code, since it's obviously not > an appropriate data structure. > > With billions plus records, >> > > With billions plus records, it may be time to move to a serious RDBMS. > Which btw will provide solution 1, or a lighter version of it using a list > of tuples, ie: > > cursor = connection.cursor() > cursor.execute("select name, address, zip from peoples") > records = cursor.fetchall() > > # at this time, you have : > #records = [ > # ("guy", "unknown","00000",), > # ("girl", "123 tiny street","12345",), > # ("boy", "321 here","33333",), > # ("gal", "999 over there", "55555",), > #] > > > (snip) > > OK - I know I missed the whole concept of a Python Dictionary. >> > > Bad thing for you, since it's the central datastructure in Python. > > I haven't read anything as yet that gives a clear picture of what it is and >> what it is for. >> > > Then you failed to read the FineManual's tutorial, which is where you > should have started: > > http://docs.python.org/tut/node7.html#SECTION007500000000000000000 > > Do yourself a favour : read the above first, then if you still have > questions about dicts, we'll gladly try to help. > > And do yourself another favour : learn about SQL, relational model and > RDBMS. > > (snip description of why the OP *really* wants a RDBMS) > > -- > http://mail.python.org/mailman/listinfo/python-list > -- FYI, my email address is changing. My rogers account will be deactivated shortly. From now on please use: [EMAIL PROTECTED]
-- http://mail.python.org/mailman/listinfo/python-list