كيفية استخدام عداد بايثون من وحدة المجموعات

في هذا البرنامج التعليمي ، ستتعلم كيفية استخدام كائن العداد من وحدة تجميع Python.
عندما تعمل باستخدام تسلسلات طويلة في Python ، على سبيل المثال ، قوائم Python أو سلاسلها ، فقد تحتاج أحيانًا إلى تخزين العناصر التي تظهر في التسلسل وعدد مرات ظهورها.
قاموس Python هو بنية بيانات مضمنة مناسبة لمثل هذه التطبيقات. ومع ذلك ، يمكن لفئة Python Counter من وحدة المجموعات تبسيط ذلك – عن طريق إنشاء عداد – وهو قاموس للعناصر وعددها في التسلسل.
خلال الدقائق القليلة القادمة ، ستتعلم ما يلي:
- استخدم الكائن المضاد لـ Python
- أنشئ قاموس Python لتخزين قيم عدد العناصر في ملف قابل للتكرار
- أعد كتابة القاموس باستخدام عداد بايثون بصيغة مبسطة
- قم بإجراء عمليات مثل تحديث العناصر وطرحها ، وإيجاد تقاطع بين كائنين من عناصر العداد
- احصل على العناصر الأكثر شيوعًا في العداد باستخدام طريقة most_common ()
هيا بنا نبدأ!
وحدة مجموعات Python وفئة العداد
ستستخدم غالبًا قاموس Python لتخزين العناصر وعددها في صيغة قابلة للتكرار. يتم تخزين العناصر والعدد كمفاتيح وقيم ، على التوالي.
نظرًا لأن فئة Counter هي جزء من وحدة مجموعات Python المضمنة ، يمكنك استيرادها في برنامج Python النصي الخاص بك كما يلي:
from collections import Counter
بعد استيراد فئة العداد كما هو مذكور ، يمكنك إنشاء مثيل لكائن عداد كما هو موضح:
<counter_object> = Counter(iterable)
هنا:
- قابل للتكرار هو أي لغة Python قابلة للتكرار مثل قائمة Python أو سلسلة أو tuple.
- يجب أن تكون العناصر الموجودة في التكرار قابلة للغسل.
الآن بعد أن عرفنا كيفية استخدام Counter لإنشاء كائنات مضادة من أي Python قابلة للتكرار ، فلنبدأ في الترميز.
يمكن العثور على الأمثلة المستخدمة في هذا البرنامج التعليمي في جوهر GitHub هذا.
كيفية إنشاء كائن مضاد من Python Iterables
لنقم بإنشاء سلسلة Python ، على سبيل المثال ، “عصر النهضة” ونسميها كلمة.
>>> word = "renaissance"
هدفنا هو إنشاء قاموس حيث يتم تعيين كل حرف في سلسلة الكلمة إلى عدد مرات حدوثه في السلسلة. تتمثل إحدى الطرق في استخدام حلقات for كما هو موضح:
>>> letter_count = {} >>> for letter in word: ... if letter not in letter_count: ... letter_count[letter] = 0 ... letter_count[letter] += 1 ... >>> letter_count {'r': 1, 'e': 2, 'n': 2, 'a': 2, 'i': 1, 's': 2, 'c': 1}
دعنا نحلل ما يفعله مقتطف الشفرة أعلاه:
- يقوم بتهيئة letter_count إلى قاموس Python فارغ.
- حلقات خلال سلسلة الكلمة.
- للتحقق مما إذا كان الحرف موجودًا في قاموس letter_count.
- إذا لم يكن الحرف موجودًا ، فإنه يضيفه بقيمة 0 ويزيد القيمة بالتالي بمقدار 1.
- لكل تكرار للحرف في الكلمة ، تتم زيادة القيمة المقابلة للحرف بمقدار 1.
- يستمر هذا حتى نمر عبر السلسلة بأكملها.
قمنا ببناء قاموس letter_count – بمفردنا – باستخدام حلقة for للتكرار خلال كلمة السلسلة.
الآن دعنا نستخدم فئة العداد من وحدة المجموعات. نحتاج فقط إلى تمرير سلسلة الكلمات إلى Counter () للحصول على letter_count دون الحاجة إلى التكرار خلال العناصر التكرارية.
>>> from collections import Counter >>> letter_count = Counter(word) >>> letter_count Counter({'e': 2, 'n': 2, 'a': 2, 's': 2, 'r': 1, 'i': 1, 'c': 1})
كائن العداد هو أيضًا قاموس Python. يمكننا استخدام وظيفة isinstance () المضمنة للتحقق من هذا:
>>> isinstance(letter_count,dict) True
كما رأينا ، ترجع isinstance (letter_count، dict) True للإشارة إلى أن letter_count الكائن المضاد هو مثيل لفئة Python deb.
تعديل كائن العداد
حتى الآن ، تعلمنا إنشاء كائنات مضادة من سلاسل Python.
يمكنك أيضًا تعديل كائنات العداد عن طريق تحديثها بعناصر من متكرر آخر أو طرح عنصر تكراري آخر منها.
تحديث عداد بعناصر من متكرر آخر
دعنا نبدأ سلسلة أخرى another_word:
>>> another_word = "effervescence"
لنفترض أننا نرغب في تحديث كائن عداد letter_count بالعناصر من سلسلة another_word.
يمكننا استخدام طريقة update () في عدد أحرف الكائن العداد.
>>> letter_count.update(another_word) >>> letter_count Counter({'e': 7, 'n': 3, 's': 3, 'c': 3, 'r': 2, 'a': 2, 'f': 2, 'i': 1, 'v': 1})
في الإخراج ، نرى أنه تم تحديث كائن العداد ليشمل أيضًا الأحرف وعدد مرات حدوثها من another_word.
طرح العناصر من متكرر آخر
الآن دعنا نطرح قيمة another_word من letter_count الكائن. للقيام بذلك ، يمكننا استخدام طريقة طرح (). يؤدي استخدام
دعنا نطرح another_word من letter_count.
>>> letter_count.subtract(another_word) >>> letter_count Counter({'e': 2, 'n': 2, 'a': 2, 's': 2, 'r': 1, 'i': 1, 'c': 1, 'f': 0, 'v': 0})
نرى أنه تم طرح القيم المقابلة للأحرف في another_word ، ولكن لم تتم إزالة المفتاحين المضافين “f” و “v”. هم الآن يرسمون القيمة 0.
ملاحظة: هنا ، قمنا بتمرير كلمة another_word ، سلسلة Python ، إلى استدعاء طريقة طرح (). يمكننا أيضًا تمرير كائن مضاد لـ Python أو كائن آخر قابل للتكرار.
التقاطع بين كائنين مضادين في بايثون
قد ترغب أحيانًا في العثور على التقاطع بين كائنين من عداد بايثون لتحديد المفاتيح المشتركة بين الاثنين.
لنقم بإنشاء كائن مضاد ، على سبيل المثال ، letter_count_2 ، من سلسلة another_word “فوران”.
>>> another_word = "effervescence" >>> letter_count_2 = Counter(another_word) >>> letter_count_2 Counter({'e': 5, 'f': 2, 'c': 2, 'r': 1, 'v': 1, 's': 1, 'n': 1})
يمكننا استخدام المعامل & البسيط لإيجاد التقاطع بين letter_count و letter_count_2.
>>> letter_count & letter_count_2 Counter({'e': 2, 'r': 1, 'n': 1, 's': 1, 'c': 1})
لاحظ كيف تحصل على المفاتيح وعدد التكرارات المشتركة بين الكلمتين. تحتوي كل من “النهضة” و “الفوران” على تكرارات “e” ، وحدث واحد لكل من “r” و “n” و “s” و “c” بشكل مشترك.
ابحث عن العناصر الأكثر شيوعًا باستخدام most_common
هناك عملية شائعة أخرى على كائن عداد Python وهي العثور على العناصر الأكثر تكرارا.
للحصول على أكثر العناصر شيوعًا في العداد ، يمكنك استخدام طريقة most_common () على كائن العداد. هنا ، نسمي most_common () على letter_count للعثور على الأحرف الثلاثة الأكثر تكرارا.
>>> letter_count.most_common(3) [('e', 2), ('n', 2), ('a', 2)]
نرى أن الأحرف “e” و “n” و “a” تظهر مرتين في كلمة “عصر النهضة”.
هذا مفيد بشكل خاص إذا كان العداد يحتوي على عدد كبير من الإدخالات وكنت مهتمًا بالعمل مع المفاتيح الأكثر شيوعًا.
خاتمة
فيما يلي مراجعة سريعة لما تعلمناه في البرنامج التعليمي:
- يمكن استخدام فئة العداد من وحدة المجموعات المضمنة في Python للحصول على قاموس لقيم العد لجميع العناصر في أي عنصر قابل للتكرار. يجب أن تتأكد من أن جميع العناصر الموجودة في الملف القابل للتكرار قابلة للغسل.
- يمكنك تحديث محتويات كائن عداد Python بمحتويات من كائن عداد آخر أو أي عنصر تكراري آخر باستخدام طريقة update () مع بناء الجملة: counter1.update (counter2). لاحظ أنه يمكنك استخدام أي قابل للتكرار بدلاً من counter2.
- إذا كنت تريد إزالة محتويات أحد العناصر التكرارية من العداد المحدث ، يمكنك استخدام طريقة طرح (): counter1.subtract (counter2).
- للعثور على العناصر المشتركة بين كائنين متعارضين ، يمكنك استخدام عامل التشغيل &. نظرًا لعدادين عداد 1 و counter2 ، فإن counter1 و counter2 يعرضان تقاطع هذين الكائنين من العدادات.
- للحصول على k أكثر العناصر شيوعًا في العداد ، يمكنك استخدام طريقة most_common (). counter.most_common (k) يعطي k العناصر الأكثر شيوعًا والتهم ذات الصلة.
بعد ذلك ، تعرف على كيفية استخدام dict الافتراضي ، وهو فصل آخر في وحدة المجموعات. يمكنك استخدام الإملاء الافتراضي بدلاً من قاموس Python العادي للتعامل مع المفاتيح المفقودة.