如何对在python中存储为字符串的整数列表进行排序[重复]

Posted

技术标签:

【中文标题】如何对在python中存储为字符串的整数列表进行排序[重复]【英文标题】:How to sort a list of integers that are stored as string in python [duplicate] 【发布时间】: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']

【问题讨论】:

a.sort(key=int) 可能与How to sort python list of strings of numbers重复 【参考方案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']

【讨论】:

以上是关于如何对在python中存储为字符串的整数列表进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在python3.6中将字符串转换为唯一的整数,反之亦然(在0到255之间)

一排书架上摆满了书籍,需要调整书籍顺序python怎么写

python把一个数字列表转化为一个数字

将整数列表转换为 Python 中的预定义字符串列表

列表特点内存分析及增删改查

从浮点字符串到 Int 的 Python 类型转换在创建列表时无法在 for 循环中工作