Python العداد في المجموعات مع المثال
⚡ ملخص ذكي
Python العداد هو فئة فرعية من القاموس تابعة لوحدة المجموعات، ويُستخدم لحساب عدد مرات ظهور كل عنصر في مجموعة قابلة للتكرار. يقبل العداد السلاسل النصية والقوائم والصفوف والقواميس، ويدعم العمليات الحسابية، ودالة most_common، وعمليات التحديث لتنفيذ مهام العد السريع.

ما هي تفاصيل Python عداد؟
Python العداد عبارة عن حاوية تحتوي على عدد كل عنصر من العناصر الموجودة في الحاوية. العداد هو فئة فرعية متاحة داخل فئة القاموس.
العداد هو فئة فرعية متاحة داخل فئة القاموس. باستخدام Python أداة العداد، يمكنك حساب أزواج القيمة الرئيسية في كائن ما، وتسمى أيضًا كائن جدول التجزئة.
لماذا استخدام Python عداد؟
هنا، الأسباب الرئيسية لاستخدام Python 3 عداد:
- يحتفظ العداد بالبيانات في مجموعة غير مرتبة، تمامًا مثل الكائنات القابلة للتجزئة. تمثل العناصر هنا المفاتيح والعدد كقيم.
- يسمح لك بحساب العناصر في قائمة قابلة للتكرار.
- العمليات الحسابية مثل الجمع والطرحtracيمكن إجراء عمليات التقاطع والاتحاد بسهولة على عداد.
- يمكن للعداد أيضًا حساب العناصر من عداد آخر
مقدمة إلى Python Counter
Python يأخذ العداد مدخلات قائمة، صف، قاموس، سلسلة، وكلها كائنات قابلة للتكرار، وسيعطيك مخرجات تحتوي على عدد كل عنصر.
بناء الجملة:
Counter(list)
افترض أن لديك القائمة التالية:
list1 = ['x','y','z','x','x','x','y', 'z']
تحتوي القائمة على عناصر x و y و z. عند استخدام العداد في هذه القائمة، سيتم حساب عدد مرات وجود x و y و z. يجب أن يكون الإخراج إذا تم استخدام العداد في القائمة 1 مثل:
Counter({'x': 4, 'y': 2, 'z': 2})
إذن لدينا عدد x كـ 4 و y كـ 2 و z كـ 2.
للاستفادة من العداد نحتاج إلى استيراده أولاً كما هو موضح في المثال الموضح أدناه:
from collections import Counter
فيما يلي مثال بسيط يوضح عمل وحدة العداد.
from collections import Counter list1 = ['x','y','z','x','x','x','y', 'z'] print(Counter(list1))
الإخراج:
Counter({'x': 4, 'y': 2, 'z': 2})
العداد مع السلسلة
In Pythonكل شيء هو كائن والسلسلة هي كائن أيضًا. Python سلسلة يمكن إنشاؤها ببساطة عن طريق وضع الأحرف داخل علامتي الاقتباس المزدوجتين. Python لا يدعم نوع الحرف. يتم التعامل معها على أنها سلاسل بطول واحد، وتعتبر أيضًا سلسلة فرعية.
في المثال أدناه، يتم تمرير سلسلة إلى العداد. تقوم بإرجاع تنسيق القاموس، مع زوج المفتاح/القيمة حيث يكون المفتاح هو العنصر والقيمة هي العدد. كما أنه يعتبر المساحة كعنصر ويعطي عدد المسافات في السلسلة.
على سبيل المثال:
from collections import Counter my_str = "Welcome to Guru99 Tutorials!" print(Counter(my_str))
الإخراج:
Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1,
'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})
العداد مع القائمة
القائمة عبارة عن كائن قابل للتكرار يحتوي على عناصره داخل أقواس مربعة.
سيتم تحويل العناصر الموجودة في القائمة عند تقديمها إلى العداد إلى كائنات قابلة للتجزئة حيث ستصبح العناصر مفاتيح وستكون القيم هي عدد العناصر من القائمة المقدمة.
على سبيل المثال ['x','y','z','x','x','x','y','z']. بمجرد إعطاء القائمة العداد، سيعطيك عدد كل عنصر في القائمة.
from collections import Counter list1 = ['x','y','z','x','x','x','y','z'] print(Counter(list1))
الإخراج:
Counter({'x': 4, 'y': 2, 'z': 2})
عداد مع القاموس
يحتوي القاموس على عناصر كأزواج مفتاح/قيمة، ويتم كتابتها داخل أقواس متعرجة.
بمجرد تسليم القاموس إلى العداد، سيتم تحويله إلى كائنات قابلة للتجزئة حيث ستصبح العناصر مفاتيح، وستكون القيم هي عدد العناصر من القاموس المحدد.
على سبيل المثال: {'x': 4، 'y': 2، 'z': 2، 'z': 2}. ستحاول وظيفة العداد العثور على عدد كل مفتاح في القاموس المحدد.
from collections import Counter dict1 = {'x': 4, 'y': 2, 'z': 2, 'z': 2} print(Counter(dict1))
الإخراج:
Counter({'x': 4, 'y': 2, 'z': 2})
عداد مع Tuple
المجموعة هي مجموعة من العناصر مفصولة بفواصل داخل أقواس دائرية. سيعطيك Counter عدد كل عنصر في المجموعة المعطاة.
بمجرد إعطاء الصف إلى العداد، سيتم تحويله إلى كائن قابل للتجزئة حيث ستصبح العناصر مفاتيح وستكون القيم هي عدد العناصر من الصف المحدد.
from collections import Counter tuple1 = ('x','y','z','x','x','x','y','z') print(Counter(tuple1))
الإخراج:
Counter({'x': 4, 'y': 2, 'z': 2})
الوصول إلى العدادات وتهيئتها وتحديثها
تهيئة العداد
يمكن تهيئة العداد عن طريق تمرير قيمة سلسلة أو قائمة أو قاموس أو صف كما هو موضح أدناه:
from collections import Counter print(Counter("Welcome to Guru99 Tutorials!")) #using string print(Counter(['x','y','z','x','x','x','y', 'z'])) #using list print(Counter({'x': 4, 'y': 2, 'z': 2})) #using dictionary print(Counter(('x','y','z','x','x','x','y', 'z'))) #using tuple
يمكنك أيضًا تهيئة عداد فارغ كما هو موضح أدناه:
from collections import Counter _count = Counter()
تحديث العداد
يمكنك إضافة قيم إلى العداد باستخدام طريقة التحديث ().
_count.update('Welcome to Guru99 Tutorials!')
الكود النهائي هو :
from collections import Counter _count = Counter() _count.update('Welcome to Guru99 Tutorials!') print(_count)
الناتج هو:
Counter({'o': 3, ' ': 3, 'u': 3, 'e': 2, 'l': 2, 't': 2, 'r': 2, '9': 2, 'W': 1,
'c': 1, 'm': 1, 'G': 1, 'T': 1, 'i': 1, 'a': 1, 's': 1, '!': 1})
عداد الوصول
للحصول على القيم من العداد يمكنك القيام بما يلي:
from collections import Counter _count = Counter() _count.update('Welcome to Guru99 Tutorials!') print('%s : %d' % ('u', _count['u'])) print('\n') for char in 'Guru': print('%s : %d' % (char, _count[char]))
الإخراج:
u : 3 G : 1 u : 3 r : 2 u : 3
حذف عنصر من العداد
لحذف عنصر من العداد يمكنك الاستفادة من del، كما هو موضح في المثال أدناه:
على سبيل المثال:
from collections import Counter dict1 = {'x': 4, 'y': 2, 'z': 2} del dict1["x"] print(Counter(dict1))
الإخراج:
Counter({'y': 2, 'z': 2})
عملية حسابية على Python Counter
العمليات الحسابية مثل الجمع والطرحtracيمكن إجراء عمليات التقاطع والاتحاد على عداد كما هو موضح في المثال أدناه:
على سبيل المثال:
from collections import Counter counter1 = Counter({'x': 4, 'y': 2, 'z': -2}) counter2 = Counter({'x1': -12, 'y': 5, 'z':4 }) #Addition counter3 = counter1 + counter2 # only the values that are positive will be returned. print(counter3) #Subtraction counter4 = counter1 - counter2 # all -ve numbers are excluded.For example z will be z = -2-4=-6, since it is -ve value it is not shown in the output print(counter4) #Intersection counter5 = counter1 & counter2 # it will give all common positive minimum values from counter1 and counter2 print(counter5) #Union counter6 = counter1 | counter2 # it will give positive max values from counter1 and counter2 print(counter6)
الإخراج:
Counter({'y': 7, 'x': 4, 'z': 2})
Counter({'x1': 12, 'x': 4})
Counter({'y': 2})
Counter({'y': 5, 'x': 4, 'z': 4})
الطرق المتوفرة على Python Counter
هناك بعض الطرق الهامة المتاحة مع العداد، وهنا قائمة بها:
- عناصر() : ستعيد لك هذه الطريقة جميع العناصر ذات العدد> 0. لن يتم إرجاع العناصر ذات العدد 0 أو -1.
- Most_common(القيمة): ستعيد لك هذه الطريقة العناصر الأكثر شيوعًا من قائمة العدادات.
- فرعيةtract(): تستخدم هذه الطريقة لخصم العناصر من عداد آخر.
- تحديث(): تُستخدم هذه الطريقة لتحديث العناصر من عداد آخر.
مثال: العناصر ()
from collections import Counter counter1 = Counter({'x': 5, 'y': 2, 'z': -2, 'x1':0}) _elements = counter1.elements() # will give you all elements with positive value and count>0 for a in _elements: print(a)
الإخراج:
x x x x x y y
مثال: Most_common(value)
from collections import Counter counter1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0}) common_element = counter1.most_common(2) # The dictionary will be sorted as per the most common element first followed by next. print(common_element) common_element1 = counter1.most_common() # if the value is not given to most_common , it will sort the dictionary and give the most common elements from the start.The last element will be the least common element. print(common_element1)
الإخراج:
[('y', 12), ('x', 5)] [('y', 12), ('x', 5), ('x1', 0), ('z', -2)]
مثال: فرعيtract()
from collections import Counter counter1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0}) counter2 = Counter({'x': 2, 'y':5}) counter1.subtract(counter2) print(counter1)
الإخراج:
Counter({'y': 7, 'x': 3, 'x1': 0, 'z': -2})
مثال: تحديث ()
from collections import Counter counter1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0}) counter2 = Counter({'x': 2, 'y':5}) counter1.update(counter2) print(counter1)
الإخراج:
Counter({'y': 17, 'x': 7, 'x1': 0, 'z': -2})
إعادة تعيين الأعداد في Python
يمكنك إعادة تعيين أعداد العداد كما هو موضح أدناه:
اعتبر أن لديك قاموسًا كالتالي: {'x': 5, 'y': 12, 'z': -2, 'x1':0}
يمكنك تغيير عدد العنصر كما هو موضح أدناه:
from collections import Counter counter1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0}) counter1['y'] = 20 print(counter1)
الإخراج: بعد التنفيذ سترى أن عدد y قد تغير من 12 إلى 20
Counter({'y': 20, 'x': 5, 'x1': 0, 'z': -2})
احصل على عدد العناصر وقم بتعيينه باستخدام العداد
للحصول على عدد عنصر باستخدام العداد يمكنك القيام بما يلي:
from collections import Counter counter1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0}) print(counter1['y']) # this will give you the count of element 'y'
الإخراج:
12
لتعيين عدد العنصر يمكنك القيام بما يلي:
from collections import Counter counter1 = Counter({'x': 5, 'y': 12, 'z': -2, 'x1':0}) print(counter1['y']) counter1['y'] = 20 counter1['y1'] = 10 print(counter1)
الإخراج:
12
Counter({'y': 20, 'y1': 10, 'x': 5, 'x1': 0, 'z': -2})
