الدالة sorted()‎ في بايثون

من موسوعة حسوب

تعيد الدّالة sorted()‎ قائمةً مُرتّبةً من عناصر الكائن القابل للتّكرار المُعطى.

البنية العامة

sorted(iterable, *, key=None, reverse=False)

المعاملات

iterable

الكائن القابل للتّكرار المُراد ترتيبُ عناصره.

key

مُعامل اختياريّ ومُعامل كلمة مفتاحيّة (keyword argument) يُحدّد دالّة تقبل مُعاملا واحدًا تُستعمل لأخذ مفتاح ترتيب من كلّ عنصر من عناصر القائمة، يُمكنك استعمال الدّالة ‎str‎.‎lower‎ كمفتاح مثلًا لترتيب الأحرف حسب صيغتها الصّغيرة (lowercase). القيمة الافتراضيّة هي القيمة None والتي تعني بأنّ المُقارنة ستُجرى على العناصر مُباشرةً.

reverse

مُعامل اختياريّ ومُعامل كلمة مفتاحيّة يكون قيمةً منطقيّةً تُحدّد ما إن كان التّرتيب النّهائي سيكون معكوسًا (عند تمرير القيمة True) أو لا (عند تمرير القيمة False أو ترك المُعامل دون تمرير أية قيمة له).

القيمة المعادة

قائمة بعناصر الكائن القابل للتّكرار مُرتّبةً.

أمثلة

المثال التّالي يوضّح كيفيّة عمل هذه الدّالة:

>>> sorted('acB') # ترتيب أبجدي يُقدّم الأحرف الكبيرة على الصّغيرة
['B', 'a', 'c']
>>> sorted('acB', key=str.lower) # ترتيب بغضّ النّظر عن حالة الأحرف
['a', 'B', 'c']
>>> sorted('213') # ترتيب عددي
['1', '2', '3']
>>> sorted(["Ahmed", "Ali", "A"]) # ترتيب قائمة أبجديًّا
['A', 'Ahmed', 'Ali']
>>> sorted(["Ahmed", "Ali", "A"], key=lambda x: len(x)) # ترتيب حسب طول العنصر
['A', 'Ali', 'Ahmed']
>>> sorted(["Ahmed", "Ali", "A"], key=lambda x: len(x), reverse=True) # عكس التّرتيب أعلاه
['Ahmed', 'Ali', 'A']

ملاحظات

  • استعمل الدّالة functools.cmp_to_key لتحويل دالّة cmp قديمة إلى دالّة مفتاح يُمكنك استعمالها مع المُعامل key.
  • الدّالة المُضمّنة sorted()‎ مُستقرّة دائمًا. تضمن الدّالة بأنّ التّرتيب لن يُغيِّر من التّرتيب النّسبي للعناصر المُتساوية، هذا مُفيد للترتيب على عدّة استدعاءات (التّرتيب حسب القسم ثمّ التّرتيب حسب درجة الرّاتب مثلًا).

انظر أيضًا

مصادر