在 Python 中对大列表进行排序

Sorting big list in Python

我有一个 200 万行的文本文件,其中每一行显示坐标和这些坐标处的电位值,例如<x> <y> <z> value。我应该如何使用 python 脚本重新排序此文件,以便数据首先按 x 坐标排序,然后按 y 坐标排序,然后按 z 排序协调。

格式:

1 2 1 value
1 8 6 value
4 3 2 value

等...

所需格式:

1 1 1 value
2 1 1 value
3 1 1 value 

等..

非常感谢!

使用按键功能:

the_list.sort(key=lambda line: tuple(map(int, line.split()[:3])))

(如果您的 x、y、z 坐标不是整数,请将 int 替换为 float

您可以将文件读取到列表中并对其进行排序,但由于大小,这会花费一些时间。例如:

with open(file, 'r') as f:
    data = sorted(f.readlines(), key=lambda x: int(''.join(x.split()[:3])))

如果要删除换行符,请改用 f.read().splitlines()