dict duplicity
Paolino
paolo_veronelli at tiscali.it
Thu Aug 18 18:32:14 EDT 2005
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
> 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
>
> randy
>
I'm not sure I got your question but having the same hash(key) is not
having the same key for a dict.
>>> {-1:0,-2:0}
{-2: 0, -1: 0}
>>> hash(-1)!=hash(-2)
False
A key lookup in a dict involve real keys comparisons via '==' among the
keys of the bin identified by the hash of the key.
Regard Paolino
___________________________________
Yahoo! Messenger: chiamate gratuite in tutto il mondo
http://it.beta.messenger.yahoo.com
More information about the Python-list
mailing list