मान लीजिए हमारे पास एक नेस्टेड सूची में प्रत्येक छात्र के नाम और ग्रेड हैं। हमें उन छात्रों के नाम प्रदर्शित करने हैं जिनका दूसरा सबसे कम ग्रेड है। यदि एक से अधिक छात्रों का दूसरा सबसे कम ग्रेड है, तो उन्हें वर्णमाला क्रम में पुनः व्यवस्थित करें और प्रत्येक नाम को एक नई पंक्ति पर प्रिंट करें।
उदाहरण के लिए, यदि इनपुट students = [['Amal',37],['Bimal',37],['Tarun',36],['Akash',41],['Himadri',39]] है, तो आउटपुट Amal, Bimal होगा क्योंकि दोनों का दूसरा सबसे कम स्कोर 37 है, वे वर्णमाला क्रम में रखे गए हैं।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- min_mark := सभी x के लिए स्कोर का न्यूनतम जो students में हैं
- students := सभी x के लिए छात्रों की सूची जो students में हैं यदि x का स्कोर > min_mark
- min2_mark := सभी x के लिए स्कोर का न्यूनतम जो students में हैं
- students := [x के नाम के लिए सभी x जो students में हैं यदि x का स्कोर min2_mark के समान है] को सॉर्ट करें
- students में प्रत्येक 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