簡體   English   中英

如何在 Python 2D 數組中執行 set() 函數?

[英]how to do set() function in Python 2D array?

我創建了一個包含 n 個元素的二維數組!

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

如何在 python 中使用 sort() 和 set() 找到第二個最低分和相應的名稱,而不使用多個循環?

嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM