الدرس 3 من 10

الفرز بمفتاح

هدف الدرس

key= يقرّر ما يُقارَن

01

الشرح

sorted() تُرجع قائمة جديدة مرتّبة ولا تمسّ الأصل. أما .sort() فترتّب القائمة نفسها وتُرجع None، ومنها الخطأ الشائع items = items.sort().

وkey= دالة تُستدعى على كل عنصر، وما تُرجعه هو ما يُقارَن. وأقصر طريقة لكتابتها lambda، دالة بلا اسم في سطر: key=lambda s: s["score"]. وreverse=True يعكس الاتجاه.

ولأكثر من معيار أرجِع صفًّا: يُقارَن أوّله، فإن تساوى فالذي يليه. key=lambda s: (s["city"], -s["score"]) ترتّب بالمدينة، ثم بالدرجة تنازليًّا داخلها؛ والسالب يعكس الرقم وحده.

والفرز في بايثون مستقرّ: المتساويان في المفتاح يبقيان بترتيبهما الأصلي، حتى مع reverse=True. أما قلب النتيجة بـ [::-1] فيقلبهما معها ويكسر هذا الضمان.

02

المطلوب

اصنع by_score: الطلاب من الأعلى درجة إلى الأدنى، والمتساويان بترتيبهما الأصلي. ثم ranked: بالدرجة تنازليًّا، وعند التساوي بالاسم أبجديًّا. كلاهما بـ sorted وkey=، ولا تمسّ students.

معايير التصحيح

5 معايير
  1. by_score من الأعلى درجة إلى الأدنى
  2. المتساويان في by_score بترتيبهما الأصلي
  3. ranked: الدرجة تنازليًّا ثم الاسم أبجديًّا
  4. students بترتيبها الأصلي
  5. الفرز بـ key= لا بمقارنة يدوية
main.py
المخرجاتPython · Pyodide

جارٍ تحميل بيئة بايثون… تُحمَّل مرّة واحدة ثم يحفظها المتصفح.

–/5

يبدأ الفحص حين تجهز البيئة.

5 معايير في بطاقة «المطلوب».