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



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

01768
01785
01799
01804
01818
01821
01835
01849
01852
01866
XXXXX

我能做些什么来按升序/降序对这些进行排序,到目前为止,我已经尝试了sorted()因为它用于刺痛,其输出是['0', '1', '6', '6', '8'] ['X', 'X', 'X', 'X', 'X']. 我希望每个单独的值都按顺序排序,而不是单个字符。任何帮助,不胜感激。

以这个答案为指导 Python 是否有用于字符串自然排序的内置函数?

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']
如果要

按整数值对所有这些字符串进行排序,则可以这样做:

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

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

使用 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

最新更新