جداول التجزئة وخرائط التجزئة في بايثون

نشرت: 2022-11-06

تتطلب البيانات طرقًا متعددة للوصول إليها أو تخزينها. تصادف أن تكون جداول التجزئة وخرائط التجزئة هي أفضل هياكل البيانات لتنفيذ ذلك في Python عبر نوع البيانات المدمج المعروف باسم القاموس.

يقوم Hashmap أو جدول Hash في بنية البيانات بتعيين المفاتيح لأزواج القيم الخاصة به ويستخدم وظيفة تحسب أي قيمة فهرس تحتوي على العناصر المراد إدراجها أو البحث عنها أو إزالتها. يساعد هذا في جعل الوصول إلى البيانات أسهل وأسرع. تخزن جداول التجزئة بشكل عام أزواج قيمة المفتاح وتستخدم وظيفة التجزئة لتوليد مفتاح.

في هذه المقالة ، ستتعرف على ماهية Hash Tables و Hashmaps وكيف يتم تنفيذها في Python.

تعلم علم البيانات لتتفوق على منافسيك

جدول المحتويات

ما هو جدول Hash أو Hashmap Python؟

جدول التجزئة أو hashmap Python هو بنية بيانات مفهرسة. يستخدم وظائف التجزئة لحساب فهرس باستخدام مفتاح في مجموعة من الفتحات أو المجموعات. يمكنك تعيين قيمته إلى دلو باستخدام الفهرس المقابل ، والمفتاح غير قابل للتغيير وفريد ​​من نوعه.

تشبه Hashmaps خزانة ذات أدراج مُصنَّفة بالأشياء التي تخزنها. على سبيل المثال ، يمكن لخرائط التجزئة تخزين معلومات المستخدم مثل الاسم الأول والأخير ، وما إلى ذلك ، في المجموعة.

تعد وظيفة التجزئة جزءًا لا يتجزأ من تنفيذ علامة التجزئة. يستخدم المفتاح ويترجمه إلى فهرس الحاوية في قائمة الجرافة. ينتج عن التجزئة المثالية فهرس منفصل لكل مفتاح. ومع ذلك ، ضع في اعتبارك أن الاصطدامات يمكن أن تحدث. عندما ينتج عن التجزئة فهرس موجود بالفعل ، يمكن استخدام حاوية لقيم متعددة بسهولة عن طريق إعادة تجزئة أو إلحاق قائمة. في بايثون ، مثال على خرائط التجزئة هو القواميس.

دعونا ننظر في تنفيذ hashmap بالتفصيل لمعرفة كيفية تخصيص وبناء هياكل البيانات لتحسين البحث.

Hashmap في بايثون

يتضمن الهاشمب الوظائف التالية:

  • set_val (مفتاح ، قيمة): تُستخدم هذه الوظيفة لإدراج زوج قيم مفتاح في خريطة التجزئة. إذا كانت هناك بالفعل قيمة موجودة في خريطة التجزئة ، فيجب عليك تحديث القيمة.
  • get_val (مفتاح): ترجع هذه الوظيفة القيمة إلى المفتاح المحدد الذي تم تعيينه أو "لم يتم العثور على سجل" إذا لم يكن لهذه الخريطة تعيين للمفتاح.
  • delete_val (مفتاح): يحذف التعيين لمفتاح معين إذا كان hashmap لديه تعيين للمفتاح.

تطبيق:-

فئة Hashtable:

# إنشاء قائمة دلو فارغة بالحجم المحدد

def __init __ (ذاتي ، الحجم):

الحجم = الحجم

self.hash_table = self.create_buckets ()

def create_buckets (ذاتي):

إرجاع [[] لـ _ في النطاق (self.size)]

# أدخل القيم في خريطة التجزئة

def set_val (ذاتي ، مفتاح ، val):

# احصل على الفهرس من المفتاح

# باستخدام دالة التجزئة

hashed_key = التجزئة (مفتاح)٪ self.size

# احصل على الدلو المقابل للفهرس

دلو = self.hash_table [hashed_key]

found_key = خطأ

للفهرس ، سجل في تعداد (دلو):

Record_key ، record_val = سجل

# تحقق مما إذا كان الدلو يحتوي على نفس المفتاح مثل

# المفتاح المراد إدخاله

إذا كان record_key == مفتاح:

found_key = صحيح

فترة راحة

# إذا كانت الحاوية تحتوي على نفس المفتاح مثل المفتاح المراد إدخاله ،

# تحديث القيمة الرئيسية

# وإلا قم بإلحاق زوج القيمة الرئيسية الجديد بالحاوية

إذا وجدت المفتاح:

دلو [الفهرس] = (مفتاح ، val)

آخر:

bucket.append ((مفتاح ، val))

# إرجاع قيمة البحث بمفتاح محدد

def get_val (ذاتي ، مفتاح):

# احصل على الفهرس من المفتاح باستخدام

# دالة تجزئة

hashed_key = التجزئة (مفتاح)٪ self.size

# احصل على الدلو المقابل للفهرس

دلو = self.hash_table [hashed_key]

found_key = خطأ

للفهرس ، سجل في تعداد (دلو):

Record_key ، record_val = سجل

# تحقق مما إذا كان الدلو يحتوي على نفس المفتاح مثل

# يتم البحث عن المفتاح

إذا كان record_key == مفتاح:

found_key = صحيح

فترة راحة

# إذا كانت الحاوية تحتوي على نفس المفتاح مثل المفتاح الذي يتم البحث عنه ،

# إرجاع القيمة التي تم العثور عليها

# خلاف ذلك أشر إلى أنه لم يتم العثور على أي سجل

إذا وجدت المفتاح:

إرجاع record_val

آخر:

إرجاع "لم يتم العثور على سجل"

# إزالة قيمة بمفتاح محدد

def delete_val (ذاتي ، مفتاح):

# احصل على الفهرس من المفتاح باستخدام

# دالة تجزئة

hashed_key = التجزئة (مفتاح)٪ self.size

# احصل على الدلو المقابل للفهرس

دلو = self.hash_table [hashed_key]

found_key = خطأ

للفهرس ، سجل في تعداد (دلو):

Record_key ، record_val = سجل

# تحقق مما إذا كان الدلو يحتوي على نفس المفتاح مثل

# المفتاح المراد حذفه

إذا كان record_key == مفتاح:

found_key = صحيح

فترة راحة

إذا وجدت المفتاح:

bucket.pop (فهرس)

إرجاع

# لطباعة عناصر خريطة التجزئة

def __str __ (ذاتي):

إرجاع "" .join (str (item) للعنصر في self.hash_table)

hash_table = HashTable (50)

# أدخل بعض القيم

hash_table.set_val ([email protected] "،" بعض القيمة ")

طباعة (hash_table)

مطبعة()

hash_table.set_val ("[email protected] "،" بعض القيم الأخرى ")

طباعة (hash_table)

مطبعة()

# البحث / الوصول إلى سجل بالمفتاح

طباعة (hash_table.get_val ('[email protected] '))

مطبعة()

# حذف أو إزالة قيمة

hash_table.delete_val ("[email protected] ")

طباعة (hash_table)

انتاج:-

[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] ([email protected] '، 'بعض القيمة')] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []

[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] ([email protected] '، 'بعض القيمة')] [] [] [] [] [] [('[email protected]' ، 'بعض القيم الأخرى')] [] [] [] [] [] [] [] [] [ ] [] [] [] [] [] [] [] [] [] [] [] []

قيمة أخرى

[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] ([email protected] '، 'بعض القيمة')] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []

تحقق من برامجنا في الولايات المتحدة - علوم البيانات

برنامج الشهادة المهنية في علوم البيانات وتحليلات الأعمال ماجستير العلوم في علوم البيانات ماجستير العلوم في علوم البيانات برنامج الشهادة المتقدمة في علوم البيانات
برنامج PG التنفيذي في علوم البيانات المعسكر التدريبي لبرمجة بايثون برنامج الشهادة المهنية في علوم البيانات لاتخاذ قرارات الأعمال برنامج متقدم في علوم البيانات

تنفيذ العمليات على جداول التجزئة باستخدام القواميس:

هناك العديد من العمليات التي يمكن إجراؤها في بايثون على جداول التجزئة عبر القواميس. وهم على النحو التالي:-

  • الوصول إلى القيم
  • تحديث القيم
  • حذف العنصر

الوصول إلى القيم:

يمكنك الوصول بسهولة إلى قيم القاموس بالطرق التالية: -

  • استخدام القيم الأساسية
  • باستخدام الوظائف
  • تنفيذ حلقة for

باستخدام القيم الأساسية:

يمكنك الوصول إلى قيم القاموس باستخدام القيم الأساسية مثل أدناه: -

my_dict = {'Elsa': '001'، 'Anna': '002'، 'Olaf': '003'}

my_dict ["آنا"]

الإخراج: 002 ′

باستخدام الوظائف:

هناك العديد من الوظائف المضمنة مثل get () ، والمفاتيح () ، والقيم () ، وما إلى ذلك.

my_dict = {'Elsa': '001'، 'Anna': '002'، 'Olaf': '003'}

طباعة (my_dict.keys ())

طباعة (my_dict.values ​​())

print (my_dict.get ('Elsa'))

انتاج:-

dict_keys (["إلسا" ، "آنا" ، "أولاف"])

dict_values ​​(['001'، '002'، '003'])

001

تنفيذ حلقة for:

تتيح لك الحلقة الوصول إلى أزواج القيمة والمفتاح في القاموس عن طريق التكرار فوقها. فمثلا:

my_dict = {'Elsa': '001'، 'Anna': '002'، 'Olaf': '003'}

طباعة ("كل المفاتيح")

بالنسبة إلى x في my_dict:

print (x) # يطبع المفاتيح

print ("كل القيم")

لـ x في my_dict.values ​​():

print (x) #prints القيم

طباعة ("كل المفاتيح والقيم")

لـ x ، y في my_dict.items ():

print (x، “:”، y) #prints مفاتيح وقيم

انتاج:

كل المفاتيح

إلسا

آنا

أولاف

كل القيم

001

002

003

كل المفاتيح والقيم

إلسا: 001

آنا: 002

أولاف: 003

تحديث القيم:

القواميس هي أنواع بيانات قابلة للتغيير ويمكن تحديثها عند الحاجة. يمكنك القيام بما يلي: -

my_dict = {'Elsa': '001'، 'Anna': '002'، 'Olaf': '003'}

my_dict ['Olaf'] = '004' # تحديث قيمة ديف

my_dict ['Kristoff'] = '005' # إضافة زوج من المفاتيح والقيمة

طباعة (my_dict)

الإخراج : {'Elsa': '001'، 'Anna': '002'، 'Olaf': '004'، 'Kristoff': '005'}

حذف العناصر من القاموس:

يمكنك حذف عناصر من قاموس بوظائف مثل del () ، pop () ، popitem () ، clear () ، إلخ. على سبيل المثال:

my_dict = {'Elsa': '001'، 'Anna': '002'، 'Olaf': '003'}

del my_dict ['Elsa'] #removes key-value pair of 'Elsa'

my_dict.pop ('Anna') # يزيل قيمة 'Anna'

my_dict.popitem () # يزيل آخر عنصر مدرج

طباعة (my_dict)

المخرجات : {'Olaf': '003'}

استنتاج

يمكننا أن نستنتج بسهولة أن خرائط التجزئة وجدول التجزئة Python جزء لا يتجزأ من الوصول الأسهل والأسرع إلى البيانات ذات الصلة. إنها أداة قيمة لمحترفي علوم البيانات مثل علماء البيانات ومحللي البيانات. إذا كنت مهتمًا بمعرفة المزيد حول مجال علوم البيانات ، فإن upGrad لديها أفضل برنامج شهادة احترافية في علوم البيانات لاتخاذ قرارات الأعمال .

ما هو جدول التجزئة ، وبايثون ، وجدول التجزئة ، بايثون؟

يساعد الهاشتابل في تخزين أزواج القيمة الرئيسية حيث يتم إنشاء مفتاح باستخدام وظيفة التجزئة. تتم عمليات تطبيق Hashmaps أو hashtable في Python باستخدام قواميس مضمنة.

ما هو الفرق بين الهاشماب وبايثون جدول التجزئة؟

Hashmap غير متزامن ، لكن Hashtable متزامن. هذا يعني أن جداول Hash آمنة في مؤشر الترابط ويمكن مشاركتها بين العديد من سلاسل الرسائل ، لكن HashMap يحتاج إلى مزامنة مناسبة قبل مشاركتها.

هل الخريطة قابلة للتجزئة؟

جدول التجزئة Python يسمى أيضًا خريطة التجزئة ، وهو عبارة عن مفاتيح تعيين بنية البيانات للقيم. يستخدم تقنية التجزئة.