تقنية

Counter في بايثون: مساواة العدّادين لا تعني تطابق المفاتيح

c==d: True؛ dict(c)==dict(d): False، مع p=7 في العدّادين وq=0 في c.
مقارنتان مختلفتان.

مساواة Counter تعامل العنصر المفقود كأن عدده صفر، منذ بايثون 3.10. [1]

الخلاصة السريعة

تساوي الأعداد لا يثبت تطابق المفاتيح المخزنة. [1] [2]

  • مساواة Counter تعامل العنصر المفقود كأن عدده صفر، منذ بايثون 3.10. [1]
  • تعيين عدد صفر لا يحذف المفتاح؛ in تفحص وجود المفتاح المخزن. [1] [2]
  • مثال مؤلف شُغّل على CPython 3.12.14 مع from collections import Counter؛ c=Counter(p=7,q=0) وd=Counter(p=7): c==d تعطي True. [1] [2]
  • dict(c)==dict(d) تعطي False؛ القاموسان لا يحتويان أزواج المفاتيح والقيم نفسها. [1] [2]
  • قراءة q تعطي 0 في كليهما، ووجودها True في c وFalse في d؛ المفاتيح المخزنة مختلفة. [1] [2]

قاعدة المساواة

مساواة Counter تعامل العنصر المفقود كأن عدده صفر، منذ بايثون 3.10. [1]

الصفر ليس حذفًا

تعيين عدد صفر لا يحذف المفتاح؛ in تفحص وجود المفتاح المخزن. [1] [2]

عدادان للمثال

مثال مؤلف شُغّل على CPython 3.12.14 مع from collections import Counter؛ c=Counter(p=7,q=0) وd=Counter(p=7): c==d تعطي True. [1] [2]

c==d -> True [1] [2]

وجود q في c صحيح وفي d خطأ؛ قراءة عددها تعطي صفرًا في كليهما.
القراءة والوجود مختلفان.

المفاتيح المخزنة

dict(c)==dict(d) تعطي False؛ القاموسان لا يحتويان أزواج المفاتيح والقيم نفسها. [1] [2]

dict(c)==dict(d) -> False [1] [2]

قراءة q تعطي 0 في كليهما، ووجودها True في c وFalse في d؛ المفاتيح المخزنة مختلفة. [1] [2]

المراجع

  1. Python — Counter في 3.12
  2. Python — أنواع مضمنة في 3.12

للتوسع: الصفر والقيم المفقودة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.