الدالة sorted()
في بايثون
< Python
تعيد الدّالة 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()
مُستقرّة دائمًا. تضمن الدّالة بأنّ التّرتيب لن يُغيِّر من التّرتيب النّسبي للعناصر المُتساوية، هذا مُفيد للترتيب على عدّة استدعاءات (التّرتيب حسب القسم ثمّ التّرتيب حسب درجة الرّاتب مثلًا).
انظر أيضًا
- تعابير lambda.
- functools.cmp_to_key.
- القوائم lists في بايثون.
- الترتيب في بايثون. لأمثلة ودرسٍ مُختصر في التّرتيب.