【问题标题】:How can I sort these?我怎样才能对这些进行排序?
【发布时间】:2018-03-26 03:41:50
【问题描述】:

我已经尝试了几个小时,但我无法修复它(我是编码/python 新手)。

with open('spelers.csv', 'r') as speler_lijst:
                spelers_lijst_lezen = csv.reader(speler_lijst, delimiter=',', quotechar='"')
                for line in spelers_lijst_lezen:
                    print(line[0],"\t", line[1])

所以我知道它会打印来自 csv 文件的所有输入,例如:

1    Name 1
5    Name 5
10   Name 10
2    Name 2

现在我想对它们进行排序。但是我尝试过的所有事情都给了我错误,或者没有达到预期的效果。

谢谢

【问题讨论】:

  • 请显示您尝试过的内容以及遇到的错误。
  • 能否添加 CSV 文件以便我们运行一个工作示例?你可能想看看 numpys argsort-function。
  • 如何添加 csv? (对不起,编码和这个网站的新手)

标签: python csv sorting


【解决方案1】:

试试:

with open('spelers.csv', 'r') as speler_lijst:
    spelers_lijst_lezen = csv.reader(speler_lijst, delimiter=',', quotechar='"')
    for line in sorted(spelers_lijst_lezen, key=lambda i: i[0]):
        print(line[0],"\t", line[1])

lambda函数中使用要排序的索引

编辑:如果您的排序键不是字符串,请使用 int cast:

sorted(spelers_lijst_lezen, key=lambda i: int(i[0]))

【讨论】:

  • 这确实适用于排序,使其更近一步。但它按第一个数字排序,然后是第二个数字等。所以 1、10、11、2、20、21 等我认为这是因为我之前用输入做出了这些。所以我需要把第一部分变成一个 int 我猜
  • 您可能希望在 key 函数中使用 int(i[0]),因为可能应该以数字方式进行排序(10 在数字排序中位于 2 之后,而 "10" 在 @987654328 之前@ 在字典字符串排序中)。
  • 是的,解决了这个问题。谢谢大家
猜你喜欢
  • 2021-09-17
  • 1970-01-01
  • 2018-12-06
  • 2010-12-05
  • 1970-01-01
  • 2016-08-28
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
相关资源
最近更新 更多