Is there a reason that dict.copy() runs like an update()? It creates a new dict object, then re-hashes and inserts every element one-by-one, complete with collisions. I would have expected a single pass to update refcounts, an allocation for identical size, and a memcpy to polish it off. Raymond