Randy Bush wrote: > a dict written as > > pKey = (prefix, pLen, origin) > > val = dict.get(pKey) > if val == None: > dict[pKey] = (timeB, timeB) > else: > if val[0] > timeB: val[0] = timeB > if val[1] < timeB: val[1] = timeB > dict[pKey] = val > > and read back as > > for pKey, pVal in dict.iteritems(): > print \ > pKey[0], hash(pKey[0]), \ > pKey[1], hash(pKey[1]), \ > pKey[2], hash(pKey[2]), \ > "hash=", hash(pKey), \ > pVal[0], hash(pVal[0]), \ > pVal[1], hash(pVal[1]) > > when run with | sort, produces > > 12.0.0.0 -2054516913 8 8 7018 329707286 hash= -604503432 917088000 917088000 > 917088000 917088000 > 12.0.0.0 -2054516913 8 8 7018 329707286 hash= -604503432 917088000 917088000 > 917088000 917088000 > 12.0.0.0 -2054516913 8 8 7018 329707286 hash= -604503432 917088000 917088000 > 917088000 917088000 > 12.0.0.0 -2054516913 8 8 7018 329707286 hash= -604503432 917088000 917088000 > 917088000 917088000
Note that there are FOUR entries above with the same hash and (more importantly, as Paolino was trying to drum into you) the same key. > 12.0.0.0 -2054516913 9 -1293912648 7018 329707286 hash= -1578430040 917088000 > 917088000 917088000 917088000 > 12.0.0.0 -2054516913 9 -1293912648 7018 329707286 hash= -1578430040 917088000 > 917088000 917088000 917088000 > > not that there are two entries with the same hash= > > i am utterly confused Firstly, to remove one possible source of confusion, change the name of your dictionary ... "mydict" or "fred" ... anything but "dict" Next, after you have created the dictionary and added items to it, do this: print len(fred) print len(fred.items()) nitems = 0 for k, v in fred.iteritems(): nitems += 1 print nitems If by this stage you haven't worked out what you are doing wrong, post an exact copy/paste of the MINIMAL code that exhibits the "multiple instances of same key in <dictionary>.iteritems()" problem -- http://mail.python.org/mailman/listinfo/python-list