كيفية فرز القوائم والقواميس في بايثون

الفرز عملية أساسية في البرمجة، حيث يسمح لك بتنظيم البيانات بالترتيب المطلوب. توفر Python أدوات قوية لفرز القوائم والقواميس، مما يجعل من السهل التعامل مع البيانات بكفاءة. في هذه المقالة، سنستكشف كيفية فرز القوائم والقواميس في Python، بما في ذلك الطرق والأمثلة المختلفة.

فرز القوائم

القوائم هي واحدة من أكثر هياكل البيانات استخدامًا في بايثون. يمكنك فرز القوائم باستخدام طريقة sort() المضمنة أو دالة sorted(). وإليك كيفية عمل كل طريقة:

استخدام sort()

تقوم طريقة sort() بفرز القائمة في مكانها، مما يعني أنها تعدل القائمة الأصلية ولا تعيد قائمة جديدة. بشكل افتراضي، تقوم بالفرز بترتيب تصاعدي.

# Example: Sorting a list in ascending order
numbers = [4, 2, 9, 1, 5]
numbers.sort()
print(numbers)  # Output: [1, 2, 4, 5, 9]

# Example: Sorting a list in descending order
numbers = [4, 2, 9, 1, 5]
numbers.sort(reverse=True)
print(numbers)  # Output: [9, 5, 4, 2, 1]

في الأمثلة أعلاه، تقوم طريقة sort() بفرز القائمة numbers أولاً بترتيب تصاعدي ثم بترتيب تنازلي باستخدام المعلمة reverse=True.

استخدام sorted()

تعيد الدالة sorted() قائمة مرتبة جديدة ولا تغير القائمة الأصلية. كما تسمح لك بتحديد ترتيب الفرز باستخدام المعلمة reverse.

# Example: Using sorted() to get a new sorted list
numbers = [4, 2, 9, 1, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # Output: [1, 2, 4, 5, 9]
print(numbers)  # Output: [4, 2, 9, 1, 5] (original list is unchanged)

# Example: Using sorted() to get a new sorted list in descending order
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc)  # Output: [9, 5, 4, 2, 1]

هنا، تعيد الدالة sorted() قائمة جديدة sorted_numbers دون تغيير القائمة numbers الأصلية. يمكنك أيضًا الفرز بترتيب تنازلي باستخدام المعلمة reverse=True.

فرز القواميس

يتضمن فرز القواميس فرز القاموس حسب المفاتيح أو القيم. وعلى عكس القوائم، كانت القواميس غير مرتبة بطبيعتها حتى إصدار Python 3.7، حيث بدأت في الحفاظ على ترتيب الإدراج. وإليك كيفية فرز القواميس:

الفرز حسب المفاتيح

لفرز القاموس حسب مفاتيحه، استخدم الدالة sorted() مع فهم القاموس أو الحلقات.

# Example: Sorting a dictionary by keys
data = {'banana': 3, 'apple': 4, 'orange': 2}
sorted_by_keys = {key: data[key] for key in sorted(data)}
print(sorted_by_keys)  # Output: {'apple': 4, 'banana': 3, 'orange': 2}

في هذا المثال، يتم فرز القاموس data حسب مفاتيحه، مما يؤدي إلى إنشاء قاموس جديد sorted_by_keys حيث تكون المفاتيح بترتيب تصاعدي.

الفرز حسب القيم

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

# Example: Sorting a dictionary by values
data = {'banana': 3, 'apple': 4, 'orange': 2}
sorted_by_values = dict(sorted(data.items(), key=lambda item: item[1]))
print(sorted_by_values)  # Output: {'orange': 2, 'banana': 3, 'apple': 4}

هنا، تعيد data.items() قائمة من الثنائيات، ويتم استخدام sorted() لفرز هذه الثنائيات حسب العنصر الثاني (القيمة) باستخدام دالة lambda. والنتيجة هي قاموس جديد sorted_by_values مع القيم بترتيب تصاعدي.

خاتمة

إن فرز القوائم والقواميس في بايثون أمر بسيط وقوي، وذلك بفضل طريقة sort() ووظيفة sorted() للقوائم، والتقنيات المختلفة للقواميس. إن فهم هذه الطرق سيساعدك على إدارة البيانات وتحليلها بشكل أكثر فعالية. جرّب تقنيات الفرز هذه لترى كيف يمكن تطبيقها على مشاريعك الخاصة!