如何在python中按降序对文本文件进行排序?

dfsfsdfdsfs

我的文本文件布局为:

Richard 3 1 5
Jeff 3 7 4
Arnold 2 1 9

我通过使用以下代码隔离了这些分数中的最高分数并将其重写:

with open ('class1.txt', 'r') as f, open("class11.txt", 'w') as fout:
      lines = [line.strip() for line in f]
      for line in lines:
           splitted = [i for i in line.split(' ') if i]
           nums = splitted[1:]
           max_nums = max(map(int, nums))
           name = splitted[0]
           fout.write(str(max_nums) + (' ') + (name) + ('\n'))
           print (splitted)

上面的代码现在交换了两列,因此最高的数字是第一个

9 Arnold

我现在需要按降序对这些数字进行排序。我已经尝试了许多方法,例如读取行和使用反向函数,但是我\在运行它时得到了很多

马丁·彼得斯(Martijn Pieters)

而不是立即写出数据,而是将数据作为元组附加到列表中,然后对该列表进行排序。然后写出数据。

重新实现您的阅读循环以创建该列表:

entries = []
with open ('class1.txt', 'r') as f:
    for line in f:
        row = line.split()
        if not row:
            continue
        name = row[0]
        max_score = max(map(int, row[1:]))
        entries.append((max_score, name))

with open("class11.txt", 'w') as fout:
    for max_score, name in sorted(entries, reverse=True):
        fout.write('{} {}\n'.format(max_score, name)

没有使用line.strip()and line.split(' '),而是使用了0参数str.split()版本,该版本包括一个带区并在任意宽度的空白处分割这简化了每行的处理。

使用sorted()函数完成排序; 设置会reverse=True颠倒排序顺序,因此最高得分将首先列出。因为entries是元组列表,所以这些元组按字典顺序排序;首先比较两个元组的第一个元素(分数),如果两个条目具有相同的分数,则第二个元素(名称)确定排序顺序。

这的确意味着具有相等分数的条目然后按照相反的字母顺序在名称上排序。如果这是一个问题,则需要使用更复杂的排序键:

sorted(entries, key=lambda t: (-t[0], t[1]))

key然后被施加到每个元组以确定排序的值; 通过对否定分数进行向前排序,您仍将最高分数放在第一位,但是如果出现平局,则姓名仍按字母顺序进行排序。

排序演示以说明差异;得分为6的两个“名称”切换位置:

>>> entries = [(5, 'foo'), (6, 'eggs'), (7, 'spam'), (6, 'bar')]
>>> sorted(entries, reverse=True)
[(7, 'spam'), (6, 'eggs'), (6, 'bar'), (5, 'foo')]
>>> sorted(entries, key=lambda t: (-t[0], t[1]))
[(7, 'spam'), (6, 'bar'), (6, 'eggs'), (5, 'foo')]

如果要对已经生成的输出文件进行排序,则必须再次读取它,分割每一行,将第一个元素转换为整数,然后应用相同的排序并随后写入循环。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用于按升序/降序对文本文件中的数据进行排序的算法

来自分类Dev

如何在 PHP 中按名字对文本文件内容进行排序?

来自分类Dev

如何在python中对文本文件进行排序?

来自分类Dev

在Python中对文本文件进行排序

来自分类Dev

如何使用gedit按字母顺序对文本文件中的行进行排序

来自分类Dev

如何在C ++中对文本文件进行排序

来自分类Dev

如何在其包含的时间间隔内对文本文件中的项目进行排序

来自分类Dev

如何使用PHP按每行中的第二个索引对文本文件进行排序

来自分类Dev

如何按列对文本文件进行排序并保持原始顺序

来自分类Dev

如何按第一个单词对文本文件的行进行排序?

来自分类Dev

按第一列对文本文件进行排序并计数重复python

来自分类Dev

在Java中对文本文件行进行排序

来自分类Dev

如何根据第二个文本文件对文本文件中的行进行排序

来自分类Dev

使用python对文本文件中的数字列进行排序

来自分类Dev

使用Python对文本文件中特定索引的值进行排序

来自分类Dev

如何使用文本文件中的数字对python中的文本文件进行排序

来自分类Dev

Bash:按字节区分大小写的排序命令或使用python sort命令对文本文件进行排序

来自分类Dev

如何在Android中按文件名或日期对文件或文件夹进行升序或降序排序?

来自分类Dev

如何在Python中对文本文件中的数字求和

来自分类Dev

Java:对文本文件行进行排序

来自分类Dev

如何以这种方式对文本文件文本进行排序?

来自分类Dev

如何按每行中的值对存储在文本文件中的条目进行排序

来自分类Dev

如何对文本文件进行排序并使用Java保存?

来自分类Dev

如何对文本文件进行排序并使用Java保存?

来自分类Dev

从bash对文本文件中的段落进行排序

来自分类Dev

在Linux中使用特定的分隔符对文本文件中的行进行排序

来自分类Dev

尝试使用方括号中的日期对文本文件进行排序

来自分类Dev

在Linux中使用特定的分隔符对文本文件中的行进行排序

来自分类Dev

根据字段中的字符对文本文件进行排序

Related 相关文章

  1. 1

    用于按升序/降序对文本文件中的数据进行排序的算法

  2. 2

    如何在 PHP 中按名字对文本文件内容进行排序?

  3. 3

    如何在python中对文本文件进行排序?

  4. 4

    在Python中对文本文件进行排序

  5. 5

    如何使用gedit按字母顺序对文本文件中的行进行排序

  6. 6

    如何在C ++中对文本文件进行排序

  7. 7

    如何在其包含的时间间隔内对文本文件中的项目进行排序

  8. 8

    如何使用PHP按每行中的第二个索引对文本文件进行排序

  9. 9

    如何按列对文本文件进行排序并保持原始顺序

  10. 10

    如何按第一个单词对文本文件的行进行排序?

  11. 11

    按第一列对文本文件进行排序并计数重复python

  12. 12

    在Java中对文本文件行进行排序

  13. 13

    如何根据第二个文本文件对文本文件中的行进行排序

  14. 14

    使用python对文本文件中的数字列进行排序

  15. 15

    使用Python对文本文件中特定索引的值进行排序

  16. 16

    如何使用文本文件中的数字对python中的文本文件进行排序

  17. 17

    Bash:按字节区分大小写的排序命令或使用python sort命令对文本文件进行排序

  18. 18

    如何在Android中按文件名或日期对文件或文件夹进行升序或降序排序?

  19. 19

    如何在Python中对文本文件中的数字求和

  20. 20

    Java:对文本文件行进行排序

  21. 21

    如何以这种方式对文本文件文本进行排序?

  22. 22

    如何按每行中的值对存储在文本文件中的条目进行排序

  23. 23

    如何对文本文件进行排序并使用Java保存?

  24. 24

    如何对文本文件进行排序并使用Java保存?

  25. 25

    从bash对文本文件中的段落进行排序

  26. 26

    在Linux中使用特定的分隔符对文本文件中的行进行排序

  27. 27

    尝试使用方括号中的日期对文本文件进行排序

  28. 28

    在Linux中使用特定的分隔符对文本文件中的行进行排序

  29. 29

    根据字段中的字符对文本文件进行排序

热门标签

归档