如何对在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中存储为字符串的整数列表进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章