如何在Python 2D数组中做set()函数?



我创建了一个有n个元素的2D数组!

n = int(input())
a = [[input(),float(input())] for _ in range(n)]

输出
a = [['Harry', 37.21], ['Berry', 37.21], ......... ['Akriti', 41.0], ['Harsh', 39.0],['Marsh', 35.5]]

如何找到第二低的分数&使用sort() &Set()在python中,不使用多个循环?

try this:

a = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.21], ['Akriti', 41.0], ['Harsh', 39.0],['Marsh', 35.5]]
a.sort(key=lambda x: x[1])
print(a)
print('second lowest is :' )
print(a[1])
# these lines add on second edit
import numpy as np
a = np.array(a)
a[[i for i in (range(len(list(a)))) if a[i][1] == a[1][1]],:]

输出:

[['Marsh', 35.5], ['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.21], ['Harsh', 39.0], ['Akriti', 41.0]]
second lowest is :
['Harry', 37.21]
array([['Harry', '37.21'],
['Berry', '37.21'],
['Tina', '37.21']], dtype='<U6')

如果你想使用set(),你可以这样做:

a = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.21], ['Akriti', 41.0], ['Harsh', 39.0],['Marsh', 35.5]]
b = set(tuple(t) for t in a)
b = sorted(b, key=lambda x: x[1])
b

输出:

[('Marsh', 35.5),
('Berry', 37.21),
('Harry', 37.21),
('Tina', 37.21),
('Harsh', 39.0),
('Akriti', 41.0)]

最新更新