تقنية

itemgetter في بايثون: هل الصف يعني قائمة مفاتيح؟

صف كامل كمفتاح واحد
قبل الفك. [1] [2]

شكل الوسيط يحدد المفتاح المطلوب. [1] [2]

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

لا؛ تمرير الصف وحده يجعله مفتاحًا واحدًا. [1] [2]

  • قاموسنا يحتوي 0 و(0,) كمفتاحين. [1] [2]
  • itemgetter((0,))(row) يعيد leaf. [1] [2]
  • itemgetter(*(0,))(row) يعيد bud. [1] [2]
  • النجمة تفك الصف؛ الوسيط بعدها العدد 0. [1] [2]
  • اختبرنا قاموسًا عاديًا في 3.12.14؛ لم يتغير. القائمة ["bud"] ترفض مفتاح الصف بـTypeError. [1] [2]

المثال

from operator import itemgetter
row={0:"bud",(0,):"leaf"}
a=itemgetter((0,))
b=itemgetter(*(0,))
print(a(row))
print(b(row))

[1] [2]

مفتاح أم وسائط؟

مررنا (0,) في الطلب الأول كاملًا. في الثاني فككناه إلى وسيط واحد هو 0. المخرجان leaf ثم bud. لم نطلب عناصر متعددة في أي منهما. [1] [2]

فك الصف يعطي مفتاحًا عدديًا
بعد الفك. [1] [2]

التحكم والنطاق

مع القائمة ["bud"] ينجح المفتاح العددي ويعيد bud، لكن مفتاح الصف يرفع TypeError. قبول المفتاح يتبع الكائن المقروء؛ لا نعمم على جلب مخصص. [1] [2]

المراجع

  1. Python 3.12: itemgetter
  2. CPython 3.12.14: equivalent itemgetter class
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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