Hash کردن کلید در دیکشنری

سلام به دوستان
چرا پایتون کلیدها را در دیکشنری hash می کند ؟
اگه hash نکنه چی میشه؟
ممنون

فکر میکنم برای جلوگیری از collision بین کلیدها.
کلا چیز جدیدی نیست گرچه اسم جدیدی در پایتون داره (دیکشنری!) ولی همون hash table هست که در زبانهای دیگه هم موجوده. اساسا یه lookup table هست.

فکر میکنم سوالتون این باشه که «چرا چیزهای غیر قابل hash شدن رو نمیشه به عنوان کلید دیکشنری استفاده کرد؟» در جواب باید بگم که «باید قابل هش باشه که پایتون بتونه باهاش hash table بسازه :joy:»
به عنوان مثال نمیشه یه دیکشنری رو به عنوان کلید یه دیکشنری دیگه استفاده کرد. چون دیکشنریها hashable نیستن. (تقریبا همه‌ی دیتاتایپهای پایتون hasable هستن)

1 پسندیده

همم ربطی به پایتون نداره به الگریتم های هش مپ بر می گرده. در کل اینجوری هست که یه هش فانکشن داره که یه مقداری رو پاس می دی بهش و یه هش بر می گردونه بعد از اون هش توی یه hashing schema استفاده می کنه که یه هش مپ بسازی.

الگریتم های زیادی برای این کار وجود داره. نمی دونم پایتون کدوم رو استفاده می کنه اما برای شروع می تونین به linear probing hashing و یا cukoo hashing یه نگاه بندازین (‌ اینا الگریتم هایی هستن که برای هش مپ با تعداد کلید مشخص استفاده می شن اما برای درک مساله کمکتون می کنن. )

2 پسندیده

حرف تون کامل می کنم
دیتاتایپ های غیر قابل تغییر(immutable) می توانند به عنوان کلید باشند مانند عدد , رشته , تاپل
و برای value هر دیتاتایپی را می توان استفاده کرد

1 پسندیده

سوالم اینکه چه دلیل داره که کلید hash بشه ؟ اگه hash نشه چی میشه؟

اون الگریتم ها رو نگاه بندازی متوجه می شی. قسمتی از پیاده سازی الگریتم هستش

1 پسندیده

از دو دوست عزیز تشکر می کنم بابت راهنمایشون