![]() |
How to find the second lowest element in the list? - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: How to find the second lowest element in the list? (/thread-37358.html) |
How to find the second lowest element in the list? - Anonymous - May-31-2022 I have a list of students and I have to print the names of students who have scored second lowest. students = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41], ['Harsh', 39]] The lowest grade of belongs to Tina. The second lowest grade of belongs to both Harry and Berry, so we order their names alphabetically and print each name on a new line. I am extremely new to python so I have coded as below - studList = [] for i in range(int(input())): name = input() score = float(input()) studList.append([name,score]) studList = sorted(studList, key = lambda x: x[1], reverse = True) print(studList)I have done till the point that I now have a sorted list but now I am not sure I do I extract the second lowest scorer's names. RE: How to find the second lowest element in the list? - DeaD_EyE - May-31-2022
from operator import itemgetter values = [('A', 4), ('B', 3), ('C', 1), ('D', 6), ('E', 1), ('F', -10), ('G', -20)] # the second smallest number is -10 name_getter = itemgetter(0) value_getter = itemgetter(1) # itemgetter is useful as a key function for sorting # this prevents the use of lambda sorted_values = sorted(values, reverse=True, key=value_getter) # btw, If you had chosen (value, name), then the key function is not required. # # get both, name and value result = sorted_values[-2] print(result) # name_getter return index 0 from result print(name_getter(result)) # or print(result[0]) RE: How to find the second lowest element in the list? - Coricoco_fr - May-31-2022 Hello, >>> students = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41], ['Harsh', 39]] >>> studList = [student[0] for student in sorted(students, key = lambda x: x[1], reverse = True)] >>> print(studList) ['Akriti', 'Harsh', 'Harry', 'Berry', 'Tina'] >>>édit: sorry ![]() RE: How to find the second lowest element in the list? - Larz60+ - May-31-2022 students = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41], ['Harsh', 39]] sorted_students = sorted(students, key=lambda x:x[1], reverse=True) print(f"Second lowest = {sorted_students[-2]}", end = '') if sorted_students[-3][1] == sorted_students[-2][1]: print(f" and {sorted_students[-3]}") else: print()results:
|