根据列表在文本文件中排列行

时间:2017-07-22 04:44:12

标签: python

我是Python的初学者,我尝试解决以下问题。我有一个脚本,在文本文件中生成行的排列,然后根据列表移动行。所以,这是我的脚本中有问题的部分:

with open('POSCAR2', "r+") as f:
   line = f.readlines()
   N = line[0:4]
   Y = [1, 4, 2, 3]
   line = [x for (y,x) in sorted(zip(Y,N), key=lambda x: x[0])]
   f.seek(0)
   f.writelines(line)

初步安排是[1,2,3,4]

 0.0         0.0         0.0
 0.0         0.0         0.5
 0.0         0.5         0.0
 0.5         0.0         0.0

运行脚本后,它变为[1,3,4,2]

 0.0         0.0         0.0
 0.0         0.5         0.0
 0.5         0.0         0.0
 0.0         0.0         0.5

但我需要[1,4,2,3]。

那么,我如何根据列表对行进行排序?

1 个答案:

答案 0 :(得分:0)

Y正在将条目i置换为Y [i],所以Y = [1,3,4,2]。

要从[1,4,2,3]获得,你可以在[Y]中为我做[Y [i-1]],这将介于它们之间。 或者将其添加到您的代码中。

line = [x for (y,x) in sorted(zip(Y,N), key=lambda x: Y[x[0]-1])]