[Python] Hash

ํŒŒ์ด์ฌ์—์„œ hash๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•๊ณผ, ์œ ์˜์ ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.

Hash

hash๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๊ฐ’์„ ํ•ด์‹ฑํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.
ํŒŒ์ด์ฌ์—์„œ๋Š” ์ „์—ญํ•จ์ˆ˜ hash๋ฅผ ํ†ตํ•ด ์ž„์˜์˜ ๊ฐ’๋“ค์„ ์ •์ˆ˜ ํ˜•ํƒœ๋กœ ํ•ด์‹ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿผ ์ด๊ฑธ ์–ด๋–จ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ• ๊นŒ?
๋ฐ”๋กœ ํ•ด์‹œํ…Œ์ด๋ธ” dict์™€ ๊ฐ™์€ ๊ตฌ์กฐ์—์„œ ํ‚ค๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ๋‹ค.

๋งŒ์•ฝ ์ปค์Šคํ…€ ํด๋ž˜์Šค ํƒ€์ž…์„ ์ •์˜ํ•˜๊ณ  ๊ทธ ํƒ€์ž…์˜ ๊ฐ’์„ dict์˜ ํ‚ค๋กœ ๋„˜๊ธฐ

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
hash๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋Ÿผ ๋ณดํ†ต ์ด๋Ÿฌํ•œ ํ˜•ํƒœ๋กœ ํ•ด์‹œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
__hash__๋Š” ํŠน์ˆ˜ํ•˜๊ฒŒ ์˜ˆ์•ฝ๋œ, ํ•ด์‹œ๋ฅผ ์œ„ํ•œ ์—ฐ์‚ฐ์ž ํ•จ์ˆ˜๋ช…์ด๋‹ค.

๋‚ด๋ถ€์˜ ๊ฐ’๋“ค์„ ํŠœํ”Œ๋กœ ์—ฎ์–ด์„œ ํ•ด์‹ฑํ•˜๋„๋ก ํ–ˆ๋‹ค.


๊ทธ๋Ÿผ ์ผ๋‹จ์€ ์ž˜ ๋™์ž‘ํ•œ๋‹ค.




๊ฐ’ ์ฐธ์กฐ๋กœ ์ธํ•œ ๋ถ€์ž‘์šฉ

์ขŒํ‘œ(Point)์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ์„ฑ ํƒ€์ž…์„ ๋‹ค๋ฃจ๋‹ค๋ณด๋ฉด, ํ•ด์‹œํ…Œ์ด๋ธ”์˜ ํ‚ค๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ๋„ ์ ์ง€๋Š” ์•Š์„ ๊ฒƒ์ด๋‹ค.
์ด์— ๋Œ€ํ•ด์„œ ์ข€ ์•Œ์•„๋‘๋ฉด ์ข‹์€ ์˜ˆ์™ธ์ผ€์ด์Šค๊ฐ€ ์žˆ๋Š”๋ฐ, ๋‹ค์Œ ์˜ˆ์‹œ์ฝ”๋“œ๋ฅผ ๋ณด์ž.

์ขŒํ‘œ๊ฐ’ ํ•˜๋‚˜๋กœ ๋”•์…”๋„ˆ๋ฆฌ์— ๊ฐ’์„ ๋„ฃ๊ณ , ๊ทธ ์ง€์—ญ ์ขŒํ‘œ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ ๋‹ค์Œ์— ๋‹ค์‹œ ์กฐํšŒ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€๋ฅผ ํ…Œ์ŠคํŠธํ•ด๋ณด๋Š” ์ฝ”๋“œ๋‹ค.
์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•  ๊ฒƒ ๊ฐ™์€๊ฐ€?
์ง€์—ญ๋ณ€์ˆ˜ p๋งŒ ๋ฐ”๋€Œ์—ˆ์œผ๋‹ˆ in ์—ฐ์‚ฐ์ž๋Š” ์—†๋‹ค๊ณ  ๋œฐ ๊ฒƒ ๊ฐ™๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.
๋™์ž‘์ด ์ข€... ๋ฏธ๋ฌ˜ํ•œ ๋ถ€๋ถ„๋“ค์ด ์žˆ๋‹ค.

in ํ‚ค์›Œ๋“œ๋Š” ๋ชป์ฐพ์•˜๋‹ค๊ณ  ๋œจ๋Š”๋ฐ, ์‹ค์ œ๋กœ ๋”•์…”๋„ˆ๋ฆฌ ์•ˆ์—๋Š” 100์œผ๋กœ ๋ฐ”๋€ x ๊ฐ’์ด ๋ฐ˜์˜๋˜์–ด์žˆ๋‹ค!

๋ณต์‚ฌ๊ฐ€ ์•„๋‹ˆ๋ผ ์ฐธ์กฐ๋ถ€ํ„ฐ ๋œจ๊ณ  ๋ณด๋Š” ํŒŒ์ด์ฌ์˜ ๊ธฐ๋ฌ˜ํ•œ ๋™์ž‘์ด ๋ถˆ๋Ÿฌ๋‚ธ ๋ฏธ๋ฌ˜ํ•œ ๋ฒ„๊ทธ์ธ๋ฐ, ํ•ด์‹œ๋œ ํ‚ค๊ฐ’์€ x๊ฐ€ 1์ผ๋•Œ๋กœ ๋งค๊ฒจ์ ธ์žˆ์ง€๋งŒ, ์ง€์—ญ๋ณ€์ˆ˜ p๋ฅผ ๋ฐ”๊ฟˆ์œผ๋กœ ์ธํ•ด์„œ ์ฐธ์กฐ๋กœ ์—ฐ๊ฒฐ๋œ ๋”•์…”๋„ˆ๋ฆฌ ๋‚ด๋ถ€ ๊ฐ์ฒด๊นŒ์ง€ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์ด๋‹ค.

์—ฌ๊ธฐ์— ๋Œ€ํ•œ ๊ฐ€์žฅ ๋ชจ๋ฒ”์ ์ธ ํ•ด๊ฒฐ์ฑ…์€ dataclass ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ๋“ฑ์„ ํ™œ์šฉํ•ด์„œ ํด๋ž˜์Šค๋ฅผ ์•„์˜ˆ ์™„์ „ํ•œ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.
ํ˜น์€ ๊ฐ’๊ณผ ๋ฌด๊ด€ํ•œ ๋‚ด๋ถ€ ๊ณ ์œ  ์‹๋ณ„์ž๋ฅผ ๋‘๊ณ  ๊ทธ๊ฑธ๋กœ ํ•ด์‹œ๊ฐ€ ๋˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜...



์ฐธ์กฐ
https://hynek.me/articles/hashes-and-equality/