چطور میتوان یک لیست یا تاپل از لیستها یا تاپلها را بر اساس یک ایندکس مشخص مرتب کرد؟
How to sort a list/tuple of lists/tuples by the element at a given index?
یک لیست از تاپلها دارم و میخوام این لیست رو بر اساس یک ایندکس خاص در هر تاپل مرتب کنم. مثلاً، اگر لیست من شامل چندین تاپل باشه و من بخوام بر اساس عنصر سوم هر تاپل این لیست رو مرتب کنم، چطور باید این کار رو انجام بدم؟
برای مرتب کردن یک لیست از تاپلها بر اساس عنصر در یک ایندکس خاص، میتونی از تابع sorted یا متد sort در پایتون استفاده کنی. در اینجا، یه مثال ساده برات میزنم:
فرض کن لیست تو به این شکل باشه:
data = [(1, 3, 2), (4, 2, 1), (5, 8, 7)]
و تو میخوای بر اساس عنصر سوم هر تاپل (ایندکس 2) این لیست رو مرتب کنی. میتونی از کد زیر استفاده کنی:
# Sorting the list of tuples by the element at index 2 sorted_list = sorted(data, key=lambda x: x[2]) # Printing the sorted list print(sorted_list)
خروجی این کد به شکل زیر میشه:
[(4, 2, 1), (1, 3, 2), (5, 8, 7)]
اینجا از sorted استفاده کردیم که یه لیست جدید مرتب شده رو برمیگردونه. اگر بخوای تغییرات رو در همون لیست اصلی اعمال کنی، میتونی از متد sort استفاده کنی:
# Sorting the list of tuples in place by the element at index 2 data.sort(key=lambda x: x[2]) # Printing the sorted list print(data)
با این روش، لیست data به صورت مستقیم مرتب میشه