تقنية

OrderedDict في بايثون: متى يؤثر ترتيب المفاتيح في المساواة؟

a==b: False؛ a==dict(b): True؛ المفاتيح والقيم نفسها والترتيب مختلف.
نوع المقارنة يغير النتيجة.

مساواة كائني OrderedDict تراعي ترتيب الأزواج. [1]

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

افحص نوع الطرفين قبل تفسير True. [1]

  • مساواة كائني OrderedDict تراعي ترتيب الأزواج. [1]
  • المقارنة مع dict تراعي أزواج المفاتيح والقيم، لا ترتيبها. [1]
  • مثال مؤلف شُغّل على CPython 3.12.14 مع from collections import OrderedDict؛ a=OrderedDict(r=4,s=11) وb=OrderedDict(s=11,r=4): a==b تعطي False. [1]
  • a==dict(b) تعطي True مع الأزواج نفسها، رغم اختلاف الترتيب. [1]
  • لفحص ترتيب الأزواج في المثال، list(a.items())==list(b.items()) تعطي False؛ True مع dict لا تثبت تطابق الترتيب. [1]

كائنان مرتبان

مساواة كائني OrderedDict تراعي ترتيب الأزواج. [1]

المقارنة مع dict

المقارنة مع dict تراعي أزواج المفاتيح والقيم، لا ترتيبها. [1]

أزواج بترتيبين

مثال مؤلف شُغّل على CPython 3.12.14 مع from collections import OrderedDict؛ a=OrderedDict(r=4,s=11) وb=OrderedDict(s=11,r=4): a==b تعطي False. [1]

a==b -> False [1]

a تبدأ r ثم s؛ b تبدأ s ثم r، بالقيم نفسها.
الأزواج نفسها؛ ترتيب مختلف.

نوع الطرف الآخر

a==dict(b) تعطي True مع الأزواج نفسها، رغم اختلاف الترتيب. [1]

a==dict(b) -> True [1]

لفحص ترتيب الأزواج في المثال، list(a.items())==list(b.items()) تعطي False؛ True مع dict لا تثبت تطابق الترتيب. [1]

المراجع

  1. Python — OrderedDict في 3.12

للتوسع: قاموس بيانات.

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