Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การเรียงลำดับ Dictionary ตามค่าใน Python

Dictionary เป็นโครงสร้างข้อมูลที่ไม่มีลำดับ ใช้โครงสร้างแบบแมปเพื่อจัดเก็บข้อมูล Dictionary จับคู่คีย์กับค่า สร้างเป็นคู่ที่เก็บข้อมูลที่เกี่ยวข้อง

ด้วยเมธอด sorted() ของ Python คุณสามารถเรียงลำดับเนื้อหาของ Dictionary ตามค่าได้ ตัวอย่างเช่น เพื่อจัดอันดับความนิยมของรายการในเมนูกาแฟ คุณสามารถใช้เมธอด sorted() ของ Python บทช่วยสอนนี้จะอธิบายว่าเมธอด sorted() ทำงานอย่างไร และวิธีใช้เพื่อเรียงลำดับเนื้อหาของ Dictionary

บทนำสรุปเกี่ยวกับ sorted() ใน Python

ฟังก์ชันในตัว sorted() ของ Python สามารถใช้เรียงลำดับออบเจ็กต์ที่วนซ้ำได้ เช่น ลิสต์ ทูเพิล และ Dictionary ฟังก์ชัน sorted() จะเรียงลำดับรายการของออบเจ็กต์ที่ระบุและสร้างออบเจ็กต์ใหม่พร้อมค่าที่เรียงลำดับแล้ว

ไวยากรณ์ของเมธอด sorted() มีดังนี้:

sorted(object, key, reverse)

เมธอดนี้รับพารามิเตอร์ 3 ตัว:

  • object: ออบเจ็กต์ที่วนซ้ำได้ซึ่งคุณต้องการเรียงลำดับ (จำเป็น)
  • key: ฟังก์ชันที่ช่วยให้คุณทำการเรียงลำดับแบบกำหนดเองได้ (ตัวเลือก)
  • reverse: ระบุว่าควรเรียงลำดับออบเจ็กต์ในลำดับจากมากไปน้อยหรือไม่ (ตัวเลือก)

ตามที่เห็น object เป็นพารามิเตอร์เดียวที่จำเป็น หากคุณตัดสินใจไม่ใช้พารามิเตอร์ตัวเลือก key และ reverse Python จะเรียงลำดับออบเจ็กต์ในลำดับจากน้อยไปมากอัตโนมัติ

หมายเหตุ: Career Karma เขียนคู่มือฉบับสมบูรณ์เกี่ยวกับเมธอด sort() และ sorted() ใน Python หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเมธอดนี้และพารามิเตอร์ key โปรดดูบทช่วยสอน Python sort() ของเรา

มาดูตัวอย่าง سريعเพื่อแสดงให้เห็นว่าเมธอด sorted() ทำงานอย่างไร

สมมติว่าเราดำเนินร้านกาแฟและต้องการดึงรายชื่อลูกค้า Coffee Club (ลูกค้าประจำ) ตามลำดับอักษร เรามีรายชื่อลูกค้าแล้วแต่เรียงตามวันที่สมัคร เราสามารถใช้โค้ดต่อไปนี้เพื่อเรียงลิสต์ของเรา:

customers = ['Kaley Fernandez', 'Darius Rowland', 'Isaac Borthwick', 'Alexandria Kidd']
sorted_customers = sorted(customers)
print(sorted_customers)

โค้ดของเราเรียงอาร์เรย์ customers และคืนค่าดังนี้:

['Alexandria Kidd', 'Darius Rowland', 'Isaac Borthwick', 'Kaley Fernandez']

ในบรรทัดแรกของโค้ด เราประกาศลิสต์ที่เก็บชื่อลูกค้า เรียกว่า: customers จากนั้นเราใช้เมธอด sorted() เพื่อเรียงลิสต์ชื่อลูกค้าในลำดับจากน้อยไปมาก ลิสต์ใหม่นี้เรียกว่า: sorted_customers สุดท้ายเราพิมพ์ลิสต์ที่เรียงลำดับแล้วออกทางคอนโซลโดยใช้ฟังก์ชัน print()

การเรียงลำดับ Dictionary ตามค่า

สมมติว่าคุณมี Dictionary และต้องการเรียงลำดับตามคู่คีย์-ค่า คุณสามารถทำได้โดยใช้สองฟังก์ชันร่วมกัน: items() และ sorted()

ฟังก์ชัน items() ช่วยให้คุณดึงรายการใน Dictionary ได้ เราสามารถใช้ฟังก์ชันนี้ร่วมกับฟังก์ชัน sorted() และพารามิเตอร์ key แบบกำหนดเองเพื่อเรียงลำดับ Dictionary ตามค่า พิจารณาตัวอย่างต่อไปนี้ 2 ตัวอย่าง

ตัวอย่างที่ 1: เรียงจากมากไปน้อย (Descending Order)

กลับมาที่ร้านกาแฟ สมมติว่าเรามี Dictionary ที่เก็บรายการในเมนูกาแฟรวมถึงจำนวนที่สั่งแต่ละรายการในเดือนที่ผ่านมา เราต้องการดูกาแฟชนิดไหนได้รับความนิยมมากที่สุดเดือนที่แล้ว จึงตัดสินใจเรียง Dictionary ใบสั่งซื้อในลำดับจากมากไปน้อยของค่า

นี่คือโปรแกรมที่เราสามารถใช้เรียงเนื้อหาของ Dictionary ตามค่า:

orders = {
    'cappuccino': 54,
    'latte': 56,
    'espresso': 72,
    'americano': 48,
    'cortado': 41
}
sort_orders = sorted(orders.items(), key=lambda x: x[1], reverse=True)
for i in sort_orders:
    print(i[0], i[1])

โค้ดของเราคืนค่าดังนี้:

espresso 72
latte 56
cappuccino 54
americano 48
cortado 41

โค้ดของเรามีรายละเอียดมาก มาแยกวิเคราะห์กัน

ในตอนต้นของโค้ด เรากำหนด Dictionary ชื่อ orders ที่เก็บชื่อกาแฟเป็น คีย์ และจำนวนที่ขายเป็น ค่า

จากนั้นเราใช้เมธอด sorted() เพื่อเรียง Dictionary orders ตามค่า นี่คือรายละเอียดการใช้เมธอด sorted():

พารามิเตอร์ ข้อความ คำอธิบาย
object orders.items() อ้างถึงค่าทั้งหมดใน Dictionary "orders" หากเราใช้แค่ "orders" เราจะต้องอ้างตำแหน่งดัชนีของรายการเพื่อดูค่าแต่ละค่า ในขณะที่ถ้าใช้ orders.items() จะสร้างลิสต์ที่วนซ้ำได้พร้อมรายการในลิสต์
key key=lambda x: x[1] กลไกการเรียงลำดับ ที่ช่วยให้เราเรียง Dictionary ตามค่าได้ นี่เป็นตัวอย่างของฟังก์ชัน Lambda ซึ่งเป็นฟังก์ชันที่ไม่มีชื่อ
reverse reverse=True ระบุว่าเราต้องการข้อมูลเรียงในลำดับจากมากไปน้อย

สุดท้ายเราสร้างลูป for ที่วนผ่านแต่ละรายการที่สร้างในเมธอด sort_order และพิมพ์ทั้งชื่อคีย์และค่าของมัน เรียงตามลำดับที่เราระบุในฟังก์ชัน sort_order

ตัวอย่างที่ 2: เรียงจากน้อยไปมาก (Ascending Order)

เช่นเดียวกัน หากเราต้องการทราบเครื่องดื่มที่นิยมน้อยที่สุดในร้านกาแฟ เราสามารถใช้โค้ดเดียวกับข้างต้นแต่ไม่ต้องมีพารามิเตอร์ reverse=True นี่คือตัวอย่างโค้ด:

orders = {
    'cappuccino': 54,
    'latte': 56,
    'espresso': 72,
    'americano': 48,
    'cortado': 41
}
sort_orders = sorted(orders.items(), key=lambda x: x[1])
for i in sort_orders:
    print(i[0], i[1])

เมื่อรันโค้ด จะได้ค่าดังนี้:

cortado 41
americano 48
cappuccino 54
latte 56
espresso 72

ตามที่เห็น โค้ดของเราคืนค่ารายการที่เรียงในลำดับจากน้อยไปมาก ตามจำนวนที่สั่งแต่ละรายการในเดือนที่ผ่านมา

List Comprehension (ลิสต์คอมเพรเฮนชัน)

นอกจากนี้ เรายังสามารถใช้ลิสต์คอมเพรเฮนชันเพื่อเรียงเนื้อหาของ Dictionary ตามค่าได้ ลิสต์คอมเพรเฮนชันเป็นเทคนิคที่กระชับในการสร้างลิสต์ใน Python และช่วยประหยัดพื้นที่หากคุณสร้างเมธอดเรียงที่ซับซ้อนกว่า

นี่คือโค้ดที่เราจะใช้เรียงออเดอร์กาแฟในลำดับจากน้อยไปมากตามจำนวนกาแฟแต่ละชนิดที่สั่ง โดยใช้ลิสต์คอมเพรเฮนชัน:

orders = {
    'cappuccino': 54,
    'latte': 56,
    'espresso': 72,
    'americano': 48,
    'cortado': 41
}
[print(key, value) for (key, value) in sorted(orders.items(), key=lambda x: x[1])]

เมื่อรันโค้ด จะได้ผลลัพธ์ดังนี้:

cortado 41
americano 48
cappuccino 54
latte 56
espresso 72

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

ลิสต์คอมเพรเฮนชันที่เราสร้างข้างต้นจะวนผ่านแต่ละรายการในลิสต์ของเราในลำดับจากน้อยไปมาก จากนั้นพิมพ์คีย์และค่าของแต่ละรายการใน Dictionary ออกทางคอนโซล

สรุป

เมื่อคุณทำงานกับ Dictionary ใน Python การเรียงลำดับ Dictionary ตามค่าเป็นการดำเนินการทั่วไป เมธอด sorted() ช่วยให้คุณเรียงชุดข้อมูลตามความต้องการของคุณ

บทช่วยสอนนี้อธิบายพร้อมตัวอย่างวิธีใช้เมธอด sorted() เพื่อเรียง Dictionary ตามค่าใน Python รวมถึงวิธีใช้พารามิเตอร์ key และ reverse

ตอนนี้คุณพร้อมที่จะเริ่มเรียง Dictionary ตามค่าอย่างมืออาชีพแล้ว!