[Python-Dev] re: syntax - "Aren't tuples redundant?"

Gordon McMillan gmcm@hypernet.com
Thu, 3 Feb 2000 15:42:25 -0500


[Greg Wilson]

> 4. "Aren't tuples redundant?"
> 
> I explained that the const-ness of tuples was needed so that they
> could be used as dictionary keys.  The guy with Perl in his background
> immediately asked if that's reliable --- a tuple can contain a list,
> which can be mutated. You've all heard this one more times than I
> have...

I guess you didn't try it:

>>> t = ([0,1],2)
>>> d = {}
>>> d[t] = "hooey"
Traceback (innermost last):
  File "<stdin>", line 1, in ?
TypeError: unhashable type
>>>

To pass the hash test, it needs to have immutable contents 
as well.

To my mind, the "can act as dictionary key" argument is a red 
herring. Tuples and lists may technically be almost the same 
thing, but I find I hardly ever need to ponder whether I should 
use a tuple or a list. Tuples are structures and lists are 
containers. Yes, you can use a container as a structure. You 
can also use a bucket as a spoon.

or-stick-your-head-straight-into-the-trough-ly y'rs

- Gordon