ในบทช่วยสอนนี้ เราจะเรียนรู้เกี่ยวกับฟังก์ชัน sorted() ใน Python
ฟังก์ชัน sorted() ใช้เรียงลำดับ iterable แบบ ascending (น้อยไปมาก) หรือ descending (มากไปน้อย) เรายังสามารถเรียง list of dictionaries ตาม key และ value ต่างๆ ได้ ลองใช้ sorted() ให้เต็มที่
ฟังก์ชัน sorted() ไม่ใช่ อัลกอริทึม in-place เหมือนเมธอด sort
sorted() แบบค่าเริ่มต้น
ฟังก์ชัน sorted() จะเรียง iterable แบบ ascending โดยค่าเริ่มต้น ลองดูตัวอย่าง
ตัวอย่าง
# เริ่มต้น list numbers = [4, 3, 5, 1, 2] # เรียงตัวเลข sorted_numbers = sorted(numbers) # พิมพ์ sorted_numbers print(sorted_numbers)
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้
[1, 2, 3, 4, 5]
reverse sorted()
เราสามารถตั้งค่าพารามิเตอร์ reverse เป็น True เพื่อเรียงแบบ descending ลองดูตัวอย่าง
ตัวอย่าง
# เริ่มต้น list numbers = [4, 3, 5, 1, 2] # เรียงแบบ descending sorted_numbers = sorted(numbers, reverse=True) # พิมพ์ sorted_numbers print(sorted_numbers)
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้
[5, 4, 3, 2, 1]
พารามิเตอร์ key กับ sorted()
ฟังก์ชัน sorted() รับพารามิเตอร์ตัวเลือกอีกตัวคือ key ใช้บอก sorted() ว่าจะเรียงตามค่าไหน
เช่นเรามี list of dictionaries ต้องการเรียงตามค่าเฉพาะ ในกรณีนี้ ส่ง key เป็นฟังก์ชันที่คืนค่าที่ต้องการเรียง
ตัวอย่าง
# เริ่มต้น list
numbers = [{'a': 5}, {'b': 1, 'a': 1}, {'c': 3, 'a': 3}, {'d': 4, 'a': 4}, {'e': 2, 'a': 2}]
# เรียง list of dict ตามค่า 'a'
sorted_dictionaries = sorted(numbers, key=lambda dictionary: dictionary['a'])
# พิมพ์
print(sorted_dictionaries)
ผลลัพธ์
การรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้
[{'b': 1, 'a': 1}, {'e': 2, 'a': 2}, {'c': 3, 'a': 3}, {'d': 4, 'a': 4}, {'a': 5}]
สรุป
sorted() เรียงลำดับคืน list ใหม่ ไม่เปลี่ยนต้นฉบับ ใช้ key และ reverse ควบคุมการเรียง หากมีข้อสงสัย กรุณาแจ้งในส่วนความคิดเห็น