Accessing Dictionary values from within the Dictionary
Robin Munn
rmunn at pobox.com
Sun Nov 17 02:44:55 EST 2002
More information about the Python-list mailing list
Sun Nov 17 02:44:55 EST 2002
- Previous message (by thread): Accessing Dictionary values from within the Dictionary
- Next message (by thread): Python and ZOPE Developers in Latinamerica wanted
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Kuros <kuros at pgtv.net> wrote: > Hi again, > > I have created a dictionary, like so: > > dict = {var1 : 0, var 2: 0} > > Now, i want the third key/value pair to equal the total values of var1 and > var2. I tried to do it this way: > > dict = {var1 : 1, var 2 : 2, var3 : dict[var1] + dict[var2]} > > But I get an invalid syntax error. > > Could someone help me out with this? Others have posted code that will work, so I will limit myself to one code-related comment: don't use dict as a variable name, *ever*. Nor int, str, list, tuple... Those are not reserved words, so Python lets you use them as variable names -- but by doing so, you're shadowing a built-in function, which is a Bad Idea and will cause much confusion (and subtle bugs) later on when you're not expecting problems. Now, the concept you need to understand here is precisely how assignment works: *first* the right-hand side is evaluated, and only *after* that does the result get bound to the name on the left-hand side. So in your example, at the time that "dict[var1]" and "dict[var2]" get evaluated, there is no dictionary named dict and so these expressions fail. But the following code will work: the_dict = {'var1': 1, 'var2': 2} the_dict['var3'] = the_dict['var1'] + the_dict['var2'] When the RHS of the second statement is evaluated, the name the_dict is already bound to a dictionary object that has keys 'var1' and 'var2'. (BTW, make *sure* you understand the difference between "dict[var1]" and "dict['var1']"! If you don't understand the difference between those two expressions, you *will* have problems.) So the expression "the_dict['var1'] + the_dict['var2']" works and evaluates to 3; then 3 is stored in the_dict['var3']. Note that this does *not* work like a spreadsheet: if you later change the_dict['var1'], the_dict['var3'] will *not* be recomputed. Hope this helps you understand this better. -- Robin Munn <rmunn at pobox.com> http://www.rmunn.com/ PGP key ID: 0x6AFB6838 50FF 2478 CFFB 081A 8338 54F7 845D ACFD 6AFB 6838
- Previous message (by thread): Accessing Dictionary values from within the Dictionary
- Next message (by thread): Python and ZOPE Developers in Latinamerica wanted
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list