Neil Cerutti wrote: > On 2007-04-24, Thomas Nelson <[EMAIL PROTECTED]> wrote: >> On Apr 23, 10:38 pm, Mel Wilson <[EMAIL PROTECTED]> wrote: >>> Even with a balanced tree, if a key in a node changes value, >>> you may have to re-balance the tree. Nothing in a Python list >>> says that a dictionary tree would have to be re-balanced if >>> you changed that particular list. >> You don't have to look at any implementation. A dictionary >> maps every key to exactly one object. If the objects were >> mutable, you could change one key to another key, and then >> which item would the dictionary pull? >> (Imaginary code) >> d = {[1,2,3]: 'hat', [1,2,4]: 'sock' } >> for key in d: >> key.pop() >> print d[[1,2]] #does this print hat or sock? > > That would be documented as undefined behavior, and users > exhorted not to do such things. > > Python's dictionaries are a proven winner--I'm definitely not an > advocate for changing them. But the general requirement for a > mapping container *isn't* that keys be immutable, but that you > either don't mutate keys, or don't do so without also reording > (rehashing?) the mapping. > And which API do you use to "reord(er?) (rehash) the mapping"?
regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://del.icio.us/steve.holden Recent Ramblings http://holdenweb.blogspot.com -- http://mail.python.org/mailman/listinfo/python-list