كيفية استخدام دالة sorted() لفرز القوائم في Python

تمت الكتابة بواسطة: عبد الحكيم

تارخ آخر تحديث: 20 سبتمبر 2024

محتوى المقال

كيفية استخدام دالة sorted() لفرز القوائم في Python

تُعد دالة sorted() واحدة من الأدوات الأكثر شيوعًا وفعالية في لغة البرمجة Python لفرز القوائم (Lists). تسمح هذه الدالة بفرز القوائم سواء كانت تحتوي على أرقام أو نصوص أو حتى كائنات أكثر تعقيدًا. تُميز دالة sorted() بأنها تُعيد قائمة جديدة مرتبة دون تعديل القائمة الأصلية، مما يوفر لك مرونة في التعامل مع البيانات.

ما هي دالة sorted() في Python؟

تُستخدم دالة sorted() لفرز القوائم (أو أي هيكل بيانات قابل للتكرار مثل tuples أو المجموعات). تعيد sorted() قائمة جديدة مرتبة وفقًا للترتيب التصاعدي افتراضيًا، ولكن يمكنك تخصيص هذا السلوك باستخدام معاملات إضافية.

كيفية استخدام sorted() مع القوائم

لاستخدام sorted()، يمكنك تمرير القائمة التي ترغب في فرزها كمعامل أول. بشكل افتراضي، سيتم ترتيب العناصر بترتيب تصاعدي.

مثال 1: فرز قائمة من الأرقام تصاعديًا

numbers = [4, 2, 9, 1, 5]
sorted_numbers = sorted(numbers)

print('القائمة المرتبة تصاعديًا هي:', sorted_numbers) # الناتج سيكون: [1, 2, 4, 5, 9]

في هذا المثال، تم تمرير قائمة تحتوي على أرقام إلى sorted()، وتم فرزها بشكل تصاعدي (من الأصغر إلى الأكبر). الناتج هو قائمة جديدة مرتبة.

فرز القوائم تنازليًا باستخدام sorted()

إذا كنت ترغب في فرز قائمة بترتيب تنازلي (من الأكبر إلى الأصغر)، يمكنك استخدام المعامل reverse=True مع دالة sorted().

مثال 2: فرز قائمة من الأرقام تنازليًا

numbers = [4, 2, 9, 1, 5]
sorted_numbers = sorted(numbers, reverse=True)

print('القائمة المرتبة تنازليًا هي:', sorted_numbers) # الناتج سيكون: [9, 5, 4, 2, 1]

في هذا المثال، باستخدام المعامل reverse=True، تم فرز القائمة بترتيب تنازلي.

فرز القوائم التي تحتوي على نصوص

يمكنك أيضًا استخدام sorted() لفرز القوائم التي تحتوي على نصوص (Strings). يتم الفرز بناءً على الترتيب الأبجدي (ترتيب الحروف الأبجدية)، حيث يتم اعتبار الحروف الكبيرة (uppercase) أصغر من الحروف الصغيرة (lowercase) عند الفرز.

مثال 3: فرز قائمة من السلاسل النصية

names = ['علي', 'محمد', 'كريم', 'سارة']
sorted_names = sorted(names)

print('الأسماء المرتبة هي:', sorted_names) # الناتج سيكون: ['سارة', 'علي', 'كريم', 'محمد']

في هذا المثال، تم فرز قائمة الأسماء وفقًا للترتيب الأبجدي للحروف.

فرز القوائم باستخدام الدوال المخصصة

توفر دالة sorted() إمكانية استخدام دالة مفتاح (key) مخصصة لتحديد معيار الفرز. هذا يُمكّنك من فرز القوائم بناءً على شروط معينة مثل طول النصوص أو حتى خصائص معقدة للكائنات.

مثال 4: فرز قائمة من السلاسل النصية بناءً على طول السلسلة

names = ['علي', 'محمد', 'كريم', 'إبراهيم']
sorted_names = sorted(names, key=len)

print('الأسماء المرتبة حسب الطول هي:', sorted_names) # الناتج سيكون: ['علي', 'كريم', 'محمد', 'إبراهيم']

في هذا المثال، تم استخدام len كدالة مفتاح لتحديد معيار الفرز، حيث يتم ترتيب السلاسل النصية حسب طولها.

فرز القوائم التي تحتوي على قواميس (Dictionaries)

يمكنك أيضًا استخدام sorted() لفرز قائمة تحتوي على قواميس (Dictionaries). في هذه الحالة، يمكنك استخدام معامل key لتحديد المفتاح الذي ترغب في الفرز بناءً عليه.

مثال 5: فرز قائمة من القواميس بناءً على قيمة معينة

students = [
    {'name': 'علي', 'grade': 85},
    {'name': 'محمد', 'grade': 90},
    {'name': 'سارة', 'grade': 78}
]
sorted_students = sorted(students, key=lambda student: student['grade'])

print('الطلاب المرتبون حسب الدرجات هم:', sorted_students)

في هذا المثال، تم استخدام دالة lambda لتحديد مفتاح الفرز، وهو قيمة الدرجات لكل طالب. تم فرز القواميس بناءً على قيمة grade.

مقارنة بين sorted() و sort()

في Python، يوجد أيضًا دالة sort() التي تُستخدم لفرز القوائم. ولكن هناك فرق رئيسي بين sorted() و sort():

  • sorted() تُعيد قائمة جديدة مرتبة ولا تؤثر على القائمة الأصلية.
  • sort() تُعدل القائمة الأصلية مباشرة دون إعادة قائمة جديدة.

مثال 6: الفرق بين sorted() و sort()

numbers = [4, 2, 9, 1, 5]

# استخدام sorted()
sorted_numbers = sorted(numbers)

# استخدام sort()
numbers.sort()

print('القائمة الأصلية بعد استخدام sort():', numbers) # الناتج سيكون: [1, 2, 4, 5, 9]
print('القائمة المرتبة باستخدام sorted():', sorted_numbers) # الناتج سيكون: [1, 2, 4, 5, 9]

في هذا المثال، نرى الفرق بين sorted() و sort(). دالة sort() تُعدل القائمة الأصلية مباشرة، بينما تُعيد sorted() قائمة جديدة.

الخلاصة

تُعد دالة sorted() في Python أداة قوية ومرنة لفرز القوائم والبيانات. سواء كنت ترغب في فرز قائمة من الأرقام، النصوص، أو حتى الكائنات المعقدة، توفر sorted() إمكانية تخصيص الفرز بناءً على معايير متعددة مثل الطول أو القيم المخصصة. تتيح لك sorted() أيضًا الحفاظ على القائمة الأصلية دون تعديلها، مما يجعلها مفيدة في التطبيقات التي تتطلب المحافظة على البيانات الأصلية.

طور مهاراتك: مقالات يجب قراءتها في البرمجة