1
0
mirror of https://github.com/satwikkansal/wtfpython synced 2024-11-25 12:34:23 +01:00

Update example: Time for more Hash brownies!

Remove previously ambiguous explnanation and
add more explanatory and clear explanation.

Fixes https://github.com/satwikkansal/wtfpython/issues/10
This commit is contained in:
Satwik Kansal 2017-09-04 23:39:23 +05:30
parent 8216f02618
commit d4a60ac9d0

7
README.md vendored
View File

@ -244,11 +244,16 @@ some_dict[5] = "Python"
#### 💡 Explanation #### 💡 Explanation
* `5` (an `int` type) is implicitly converted to `5.0` (a `float` type) before calculating the hash in Python. * Python dictionaries check for equality and compare the hash value to determine if two keys are the same.
* Immutable objects with same value always have a same hash in Python.
```py ```py
>>> 5 == 5.0
True
>>> hash(5) == hash(5.0) >>> hash(5) == hash(5.0)
True True
``` ```
**Note:** Objects with different values may also have same hash (known as hash collision).
* When the statement `some_dict[5] = "Python"` is executed, the existing value "JavaScript" is overwritten with "Python" because Python recongnizes `5` and `5.0` as the same keys of the dictionary `some_dict`.
* This StackOverflow [answer](https://stackoverflow.com/a/32211042/4354153) explains beautifully the rationale behind it. * This StackOverflow [answer](https://stackoverflow.com/a/32211042/4354153) explains beautifully the rationale behind it.
--- ---