Python ตอนที่ 86 เรียงลำดับข้อมูลใน List ด้วยเมธอด sort()

เมธอด sort() ใช้สำหรับเรียงลำดับข้อมูลในลิสต์ โดยมีรูปแบบการใช้งานดังนี้

list.sort(reverse=True|False, key=Function)
  • reverse (จะระบุหรือไม่ก็ได้) ถ้าระบุ reverse=True จะเรียงลำดับจากมากไปน้อย แต่ถ้าไม่ระบุ ค่าเริ่มต้นจะเป็น reverse=False จะเรียงลำดับจากน้อยไปมาก
  • key คือฟังก์ชันสำหรับระบุเกณฑ์การเรียงลำดับ (จะระบุหรือไม่ก็ได้)

โดยค่าเริ่มต้น เมธอด sort() จะเรียงลำดับข้อมูลในลิสต์จากน้อยไปมาก ดังตัวอย่าง

cars = ['Toyota', 'Honda', 'Suzuki', 'Benz']
cars.sort()
print(cars)
  • บรรทัดที่ 2 สั่งให้เรียงลำดับข้อมูลในลิสต์ด้วยเมธอด sort() โดยไม่ระบุคีย์เวิร์ดใด ๆ ผลคือจะเรียงลำดับจากน้อยไปมาก

ผลลัพธ์

[‘Benz’, ‘Honda’, ‘Suzuki’, ‘Toyota’]

ถ้าต้องการเรียงลำดับจากมากไปน้อย ให้ระบุคีย์เวิร์ด reverse=True

cars = ['Toyota', 'Honda', 'Suzuki', 'Benz']
cars.sort(reverse=True)
print(cars)
  • บรรทัดที่ 2 สั่งให้เรียงลำดับข้อมูลในลิสต์ด้วยเมธอด sort() โดยระบุคีย์เวิร์ด reverse=True ผลคือจะเรียงลำดับจากมากไปน้อย

[‘Toyota’, ‘Suzuki’, ‘Honda’, ‘Benz’]

เราสามารถกำหนดกฎเกณฑ์ในการเรียงลำดับนอกเหนือจากการเรียงลำดับตามปกติได้ โดยการสร้างฟังก์ชันขึ้นมาใช้งาน และเมื่อเรียกใช้เมธอด sort() ให้กำหนดฟังก์ชันดังกล่าวให้กับคีย์เวิร์ด key

ตัวอย่าง

def myFunction(x):
    return len(x)

cars = ['Toyota', 'Honda', 'Suzuki', 'Benz']
cars.sort(key=myFunction)
print(cars)
  • บรรทัดที่ 1-2 สร้างฟังก์ชันขึ้นมา 1 ฟังก์ชัน คืนค่ากลับไปเป็นความยาวของค่าที่ส่งเข้ามา
  • บรรทัดที่ 5 ใช้เมธอด sort() เพื่อเรียงลำดับข้อมูลในลิสต์ โดยระบุคีย์เวิร์ด key=myFunction

ผลลัพธ์คือข้อมูลในลิสต์จะถูกเรียงลำดับโดยพิจารณาจากความยาวของค่าแต่ละค่า ค่าที่มีความยาวน้อยกว่าจะถูกเรียงไว้ก่อน

[‘Benz’, ‘Honda’, ‘Toyota’, ‘Suzuki’]

ถ้าต้องการให้เรียงแบบกลับด้านก็ระบุคีย์เวิร์ด reverse=True เพิ่มเข้าไปอีก

def myFunction(x):
    return len(x)

cars = ['Toyota', 'Honda', 'Suzuki', 'Benz']
cars.sort(reverse=True,key=myFunction)
print(cars)

ผลลัพธ์

[‘Toyota’, ‘Suzuki’, ‘Honda’, ‘Benz’]

ตัวอย่างการเรียงลำดับข้อมูลรถตามปี

def myFunction(x):
    return x['year']

cars = [
    {'car': 'Yaris', 'year': 2021},
    {'car': 'Vios', 'year': 2020},
    {'car': 'Veloz', 'year': 2022},
    {'car': 'Fortuner', 'year': 2018},
]
cars.sort(key=myFunction)
print(cars)

ผลลัพธ์

[{‘car’: ‘Fortuner’, ‘year’: 2018}, {‘car’: ‘Vios’, ‘year’: 2020}, {‘car’: ‘Yaris’, ‘year’: 2021}, {‘car’: ‘Veloz’, ‘year’: 2022}]