我试图在嵌套列表中找到第二个最小值,其中每个子列表都包含一个名称和一个浮点值。
如果有重复值,我需要比较相关的浮点值。
if __name__ == '__main__':
n = int(input())
list = []
for _ in range(n):
name = input()
score = float(input())
list.append([name,score])
listsort = sorted(list,key = lambda x:x[1])
newlist = listsort[1:2]
#if listsort[]
newlist.sort()
print(newlist)
它工作正常,没有重复的值。
Input :
5
Harry
37.21
Berry
37.21
Tina
37.2
Akriti
41
Harsh
39
输出:[['Berry', 37.21] ['Harry', 37.21]]
答案 0 :(得分:2)
适应您的代码,我们可以在列表上枚举并检查float值是否等于listsort[1][1]
(第二小值)。如果是这样,则返回人员和浮点值。
if __name__ == '__main__':
n = int(input())
list = []
for _ in range(n):
name = input()
score = float(input())
list.append([name,score])
listsort = sorted(list,key = lambda x:x[1])
print([listsort[i] for i, x in enumerate(listsort) if x[1] == listsort[1][1]])
输入:
4
Tom
1
Jeff
2
Bob
2
Henry
3
结果:
[['Jeff', 2.0], ['Bob', 2.0]]