สมมติว่าเรามีชื่อและเกรดสำหรับนักเรียนแต่ละคนในรายการที่ซ้อนกัน เราต้องแสดงชื่อนักเรียนที่มีเกรดต่ำสุดเป็นอันดับสอง หากมีนักเรียนมากกว่าหนึ่งคนที่ได้เกรดต่ำสุดเป็นอันดับสอง ให้เรียงลำดับใหม่ตามลำดับตัวอักษรและพิมพ์ชื่อแต่ละชื่อในบรรทัดใหม่
ดังนั้น ถ้าข้อมูลเข้าเหมือนนักเรียน =[['Amal',37],['Bimal',37],['Tarun',36],['Akash',41],['Himadri',39]] จากนั้นผลลัพธ์จะเป็น Amal โดย Bimal ทั้งคู่มีคะแนนขั้นต่ำเป็นอันดับสองคือ 37 โดยเรียงตามลำดับตัวอักษร
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- min_mark :=คะแนนขั้นต่ำสำหรับ x ทั้งหมดในนักเรียน
- นักเรียน :=รายชื่อนักเรียน x สำหรับ x ทั้งหมดในนักเรียน ถ้าคะแนน> min_mark
- min2_mark :=คะแนนขั้นต่ำสำหรับ x ทั้งหมดในนักเรียน
- นักเรียน :=เรียงลำดับรายการ [ด้วยชื่อ x สำหรับ x ทั้งหมดในนักเรียน ถ้าคะแนน x เท่ากัน
- min2_mark]
- สำหรับแต่ละ x ในนักเรียน ทำ
- แสดง x
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น
def solve(students): min_mark = min(x[1] for x in students) students = [x for x in students if x[1] > min_mark] min2_mark = min(x[1] for x in students) students = sorted([x[0] for x in students if x[1] == min2_mark]) for x in students: print(x) students = [['Amal',37],['Bimal',37],['Tarun',36],['Akash',41],['Himadri',39]] solve(students)
อินพุต
[['Amal',37],['Bimal',37],['Tarun',36],['Akash',41],['Himadri',39]]
ผลลัพธ์
Amal Bimal