list vs tuple

Fredrik Lundh fredrik at
Wed Mar 28 20:57:11 CEST 2001

Mark Pilgrim wrote
> It was my understanding that only tuples containing immutable objects could
> be used as dictionary keys.  For instance, (1,2,3) can be, and ("a","b","c")
> can be, but ([1,2,3], ["a","b","c"]) can not, because the underlying objects
> could mutate and cause problems.  (Wow, that sounds like a bad sci-fi
> movie.)  Is this true?

no python interpreter within reach today?

>>> d = {}
>>> d[(1, 2, 3)] = 1
>>> d[("a", "b", "c")] = 2
>>> d[([1, 2, 3], ["a", "b", "c"])] = 3
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: unhashable type

Cheers /F

PS. For some reason, nobody has mentioned that tuples and lists
tend to be *used* in different ways, also when you're not using
them as dictionary keys:
- Tuples are typically used to group heterogenous sets
  of data, just like structs/records in other languages.
- Lists are used as containers, to store homogenous sets
  of data, just like arrays/vectors in other languages.

More information about the Python-list mailing list