【问题标题】:How to sort a list of integers that are stored as string in python [duplicate]如何对在python中存储为字符串的整数列表进行排序[重复]
【发布时间】:2020-06-27 04:59:09
【问题描述】:

我尝试对实际上是整数的字符串列表进行排序,但我没有得到正确的排序值。如何按照字符串的整数值排序?

a = ['10', '1', '3', '2', '5', '4']
print(sorted(a))

输出:

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

想要的输出:

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

【问题讨论】:

标签: python python-3.x string sorting


【解决方案1】:

我们必须使用 lambda 作为键,并在排序函数发生之前将每个字符串设为 int。

sorted(a,key=lambda i: int(i))

Output :
     ['1', '2', '3', '4', '5', '10']

更短的方式 -> sorted(a,key=int)。感谢@Mark 的评论。

【讨论】:

  • 我认为这是正确的做法。 FWIW,您可以简单地 sorted(a,key=int) 并避免使用 lambda。
  • @MarkMeyer,哇……那更短了!!……从来没有想过这个。谢谢
【解决方案2】:

因此,解决此问题的一种方法是通过遍历每个元素并将它们转换为整数,然后对其进行排序并再次将其再次转换为字符串列表,从而将列表转换为整数列表。

【讨论】:

    【解决方案3】:

    您可以将字符串转换为整数,对它们进行排序,然后再转换回字符串。使用列表推导的示例:

    sorted_a = [str(x) for x in sorted(int(y) for y in a)]
    

    更详细的版本:

    int_a = [int(x) for x in a]  # Convert all elements of a to ints
    sorted_int_a = sorted(int_a)  # Sort the int list
    sorted_str_a = [str(x) for x in sorted_int_a]  # Convert all elements of int list to str
    
    print(sorted_str_a)
    

    注意:@tedd 对这个问题的解决方案是这个问题的首选解决方案,我肯定会推荐它。

    【讨论】:

      【解决方案4】:

      当您有一个元素列表并且想要使用元素的某些属性进行排序时,请使用 key 参数 (see the docs)。

      它是这样的:

      >>> a = ['10', '1', '3', '2', '5', '4']
      >>> print(sorted(a))
      ['1', '10', '2', '3', '4', '5']
      >>> print(sorted(a, key=lambda el: int(el)))
      ['1', '2', '3', '4', '5', '10']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-22
        • 1970-01-01
        • 2016-12-25
        • 2018-07-19
        • 2019-02-05
        • 1970-01-01
        • 2013-07-02
        相关资源
        最近更新 更多