在Python中对文本文件内的列表进行排序

时间:2015-05-13 12:19:27

标签: python sorting

我创建了一个代码,它将一个包含6个随机数的列表附加到一个文本文件中,其中包含一些规则,如3赔率& 3均匀,2赔率& 3甚至等等。

有没有办法对文本文件中的列表进行排序?例如:

如果我有这样的文本文件:

[2, 3, 4]
[2, 4, 5]
[3, 1, 2]
[1, 3, 4]
[1, 2, 3]

我想安排/排序:

[1, 2, 3]
[1, 3, 4]
[2, 3, 4]
[2, 4, 5]
[3, 1, 2]

到目前为止我的解决方案(但我不知道如何应用它):

  1. 只需将1 2 3[1, 2, 3]不同,以便我可以在.split()

  2. 的帮助下轻松地在我的代码中使用它
  3. 迭代所有第一个数字并排序

    如果第一个数字等于另一个第一个数字:

    检查谁具有较低的第二个数字并将其移到顶部

    如果第二个数字相等:

    检查谁拥有较低的第3个数字并将其移至顶部

    等等。

4 个答案:

答案 0 :(得分:3)

只需排序为列表。你不必担心迭代。

with open('test.txt', 'r') as text:
    nums = [ast.literal_eval(i) for i in text]
    data = [str(i) + '\n' for i in sorted(nums)]

with open('test.txt', 'w') as text:
    text.writelines(data)

答案 1 :(得分:0)

从名为original.txt的文件中读取列表,并将排序后的结果写入名为sorted.txt的文件中:

with open('original.txt') as f, open('sorted.txt', 'w') as g:
    unsorted_lists = map(eval, f.read().splitlines())
    sorted_lists = sorted(unsorted_lists)
    g.write('\n'.join(map(str, sorted_lists)))

答案 2 :(得分:0)

您可以将文件读取为行,对它们进行排序并将其写回:

out = open("out","w")
for i in sorted(open("in").readlines()):
  if i[-1] != "\n":
    i+="\n"
  out.write(i)
out.close()

答案 3 :(得分:0)

Python中的列表与您所描述的排序相当:

>>> [1,2,3] < [1,2,4]
True
>>> [1,2,3] >= [1,3,3]
False

如果您在Python中开始生成文本文件,则可以在编写文件之前对列表进行排序。或者您可以读取文件并解析每一行,然后对其进行排序。如果您不信任该文件的内容,则可以使用json module将每一行解析为JSON。

这比使用字符串比较进行排序更有效,因为字符串比较会因数字位数不同的数字而中断。