如何比较子列表的值

时间:2019-07-12 15:41:15

标签: python

我试图在嵌套列表中找到第二个最小值,其中每个子列表都包含一个名称和一个浮点值。

如果有重复值,我需要比较相关的浮点值。

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]]

1 个答案:

答案 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]]