غياب التجزئة لا يمنع التأكيد هنا. [1] [2] [3]
الخلاصة السريعة
نعم، في مثال القوائم العادية. [1] [2] [3]
- في CPython 3.12.14، نقارن [[4],[4],[7]] بـ[[7],[4],[4]] باستدعاء مباشر. [1] [2] [3]
- assertCountEqual ينجح ويعيد None؛ عناصر مثالنا قوائم غير قابلة للتجزئة. [1] [2] [3]
- التنفيذ يتحول عند TypeError من Counter إلى مقارنة عامة تعتمد المساواة. [2] [3]
- Counter يعد كائنات قابلة للتجزئة؛ تحكم مستقل بنفس القيم يرفع TypeError. [4]
- تغيير المقابل إلى [[4],[7],[7]] يرفع AssertionError؛ المدخلات الأصلية ثابتة. [1] [2] [3]
مثال محدد
في CPython 3.12.14، نقارن [[4],[4],[7]] بـ[[7],[4],[4]] باستدعاء مباشر. [1] [2] [3]
عناصر داخلية
assertCountEqual ينجح ويعيد None؛ عناصر مثالنا قوائم غير قابلة للتجزئة. [1] [2] [3]
المقارنة العامة
التنفيذ يتحول عند TypeError من Counter إلى مقارنة عامة تعتمد المساواة. [2] [3]
from unittest import TestCase a=[[4],[4],[7]];b=[[7],[4],[4]] t=TestCase() print(t.assertCountEqual(a,b)) bad=[[4],[7],[7]] try: t.assertCountEqual(a,bad) except AssertionError: print("AssertionError") [1] [2] [3]
![تحكم مستقل؛ Counter; input:[[4],[4],[7]]; result:TypeError](https://images.bahralolom.com/assets/local-2000-20261012/BA-1937/python-unittest-countunhashable-values.png)
تحكم وحدود
Counter يعد كائنات قابلة للتجزئة؛ تحكم مستقل بنفس القيم يرفع TypeError. [4]
from collections import Counter control=[[4],[4],[7]] try: Counter(control) except TypeError: print("TypeError") [4]
تغيير المقابل إلى [[4],[7],[7]] يرفع AssertionError؛ المدخلات الأصلية ثابتة. [1] [2] [3]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
![قوائم داخلية؛ a:[[4],[4],[7]]; b:[[7],[4],[4]]; assertCountEqual; return:None; _count_diff_all_purpose](https://images.bahralolom.com/assets/local-2000-20261012/BA-1937/python-unittest-countunhashable-main.png)