繁体   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