簡體   English   中英

根據第一列對2d數組進行排序

[英]Sorting a 2d array based on the first column

我有一個帶有一些整數的數據文件

2 8 
6 7 3
4
1 3 4 2

我想讀取行並根據每行中的第一個元素對它們進行排序。 所以輸出應該是

1 3 4 2
2 8
4
6 7 3

以下語句讀取文件並將每行存儲在數組中

fs = open('test.txt')
lines = [line for line in fs if line.strip()]

現在我想使用正確的鍵sorted 但不知道如何使用它。 這里清楚地解釋 lambda函數,但挑戰是

1)參數列表應該類似for row in lines

2)代碼塊應該像row[0]

但是這種語法不正確,我知道!

sorted( lines, key=lambda for row in lines : row[0])

您需要拆分行然后使用已排序而不是更好地根據數字的整數值對行進行排序,因為對於長度更多的數字,它將被錯誤地比較(因為按字典順序排序):

lines = sorted([line.split() for line in fs if line.strip()],key=lambda x :int(x[0]))

或者使用operator.itemgetter作為在這種情況下表現更好的鍵:

from operatior import itemgetter
lines = sorted([line.split() for line in fs if line.strip()],key=int(itemgetter(0)))

你可以參加這些台詞:

new_lines = [' '.join(i) for i in lines] 

暫無
暫無

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

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