在 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()
。
我有一个 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()
。