在Python中排序大列表

时间:2017-07-21 16:59:45

标签: python sorting large-files

我有一个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 

等。

非常感谢提前!

2 个答案:

答案 0 :(得分:1)

您可以将文件读入列表并对其进行排序,但由于尺寸的原因需要时间。例如:

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

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

答案 1 :(得分:0)

使用按键功能:

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

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