The topic title pretty much says it all. Does anyone know how the built in dictionary type for python is implemented? My understanding is that it is some sort of hash table, but I haven't been able to find any sort of definitive answer.
It is a hash table. You can read about it some in the python wiki. Otherwise, the code is well-written and should be easy to understand.
It is Open hashing based on a primitive polynomial over Z/2. (Old link)
Please refer Beautiful Code By Andy Oram, Greg Wilson. There is an excellent chapter titled "Python's Dictionary Implementation Being All Things to All People" by Andrew Kuchling.
Pure Python Dictionary Implementation
For those curious about how CPython's dict implementation works, I've written a Python implementation using the same algorithms.
Here's a link to the actual implementation in the python SVN repository. That should be the most definite answer.
Python Dictionaries use Open addressing (reference inside Beautiful code)
NB! Open addressing, a.k.a closed hashing should, as noted in Wikipedia, not be confused with its opposite open hashing! (which we see in the accepted answer).
Open addressing means that the dict uses array slots, and when an object's primary position is taken in the dict, the object's spot is sought at a different index in the same array, using a "perturbation" scheme, where the object's hash value plays part.