On Thu, Aug 28, 2008 at 10:02 AM, Ron Brennan <[EMAIL PROTECTED]> wrote: > I have another question. > > How would like to be able to add the contents on the values for one key. > > key['20001']:[978, 345]
I'm assuming that by this you meant: assert the_dict['20001'] == [978, 345] > > How can I do this? sum(the_dict['20001']) #=> 1323 Regards, Chris ======== Follow the path of the Iguana... Rebertia: http://rebertia.com Blog: http://blog.rebertia.com > > 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 > -- http://mail.python.org/mailman/listinfo/python-list