如何在python中对字符串进行排序?

时间:2019-02-06 07:18:55

标签: python

在该网站的其他地方找不到答案,这就是为什么我要问。我的答案有所不同,因为它包含字母数字值,并且不适用于任何基于整数的解决方案,这是我的字符串示例:

01768
01785
01799
01804
01818
01821
01835
01849
01852
01866
XXXXX

我该怎么做才能按升序/降序对它们进行排序,到目前为止,我已经尝试过sorted(),因为它用于st刺,其输出为['0', '1', '6', '6', '8'] ['X', 'X', 'X', 'X', 'X']。我希望对每个单独的值进行排序,而不要对每个字符进行排序。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

如果要按字符串的整数值对所有这些字符串进行排序,则可以执行以下操作:

sorted(arr,key=lambda x:int(x))

arr是所有这些字符串的列表。

答案 1 :(得分:1)

使用sorted

例如:

s = """01768
01785
01799
01804
01818
01821
01835
01849
01852
01866"""

print("Ascending")
print( "\n".join(map(str, sorted(map(int, s.splitlines())))) )
print("---")
print("Descending")
print( "\n".join(map(str, sorted(map(int, s.splitlines()), reverse=True))) )

输出:

Ascending
1768
1785
1799
1804
1818
1821
1835
1849
1852
1866
---
Descending
1866
1852
1849
1835
1821
1818
1804
1799
1785
1768

答案 2 :(得分:1)

使用此答案作为指南Does Python have a built in function for string natural sort?

alist = ['01768',
'01785',
'01799',
'01804',
'01818',
'01821',
'01835',
'01849',
'01852',
'01866',
'XXXXX']

from natsort import natsorted, ns
r = natsorted(alist, key=lambda y: y.lower())

>>>print(r)
['01768', '01785', '01799', '01804', '01818', '01821', '01835', '01849', '01852', '01866', 'XXXXX']