我将csv导入到python中,现在我有一个看起来像这样的嵌套列表。
data = [['header1,'header2','header3'...], [1,2,3...], [a,b,c...] ]
所以第一行是标题行,其余的是实际数据。我想使用以下代码对数据进行排序:
data = sorted(data, key = lambda x: x[1]) #-> sorts data by the 2nd header
但是当我这样做时,代码也会对标题行进行排序,而我的标题位于数据中某处的中间位置。如何在第一行保留标题,同时对其余标题进行排序? 我已经看到一些使用operator.itemgetter()执行此操作的代码,但我不想这样做
答案 0 :(得分:1)
您可以对数组的切片进行排序,如:
data = [['header1','header2','header3'],
[1, 2, 3],
[2, 3, 4],
[5, 6, 7],
[3, 4, 5],
[7, 8, 9],
[6, 3, 4]
]
data[1:] = sorted(data[1:], key = lambda x: x[0])
这将从第一个元素开始,对其进行排序,并将其重新分配到数组的同一个切片。
现在的数据是:
[['header1', 'header2', 'header3'],
[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[5, 6, 7],
[6, 3, 4],
[7, 8, 9]
]
答案 1 :(得分:0)
排序(数据[1:],键= lambda x:x [1])