เมื่อต้องการเรียงลำดับ list of tuples ตามค่าสูงสุด (maximum element) ในแต่ละ tuple สามารถใช้ฟังก์ชัน max() เป็น key ในการ sort
โค้ดตัวอย่าง
def get_max_value(my_val):
return max(my_val)
my_list = [(4, 6, 8, 1), (13, 21, 42, 56), (7, 1, 9, 0), (1, 2)]
print("The list is:")
print(my_list)
my_list.sort(key=get_max_value, reverse=True)
print("The sorted tuples are:")
print(my_list)
ผลลัพธ์
The list is: [(4, 6, 8, 1), (13, 21, 42, 56), (7, 1, 9, 0), (1, 2)] The sorted tuples are: [(13, 21, 42, 56), (7, 1, 9, 0), (4, 6, 8, 1), (1, 2)]
คำอธิบาย
ฟังก์ชัน
get_max_valueคืนค่าสูงสุดของ tuple ที่ส่งเข้ากำหนด list of tuples
เรียก
my_list.sort(key=get_max_value, reverse=True)key=get_max_value: ใช้ค่าสูงสุดของแต่ละ tuple เป็นเกณฑ์การเรียงreverse=True: เรียงจากมากไปน้อย (descending)
วิธีเขียนสั้นกว่า (ไม่ต้องสร้างฟังก์ชันแยก):
my_list.sort(key=max, reverse=True) # หรือ สร้าง list ใหม่ (ไม่เปลี่ยน list เดิม) sorted_list = sorted(my_list, key=max, reverse=True)
ฟังก์ชัน max built-in ของ Python ใช้เป็น key ได้เลย เพราะรับ iterable (tuple) และคืนค่าสูงสุด