在该网站的其他地方找不到答案,这就是为什么我要问。我的答案有所不同,因为它包含字母数字值,并且不适用于任何基于整数的解决方案,这是我的字符串示例:
01768
01785
01799
01804
01818
01821
01835
01849
01852
01866
XXXXX
我该怎么做才能按升序/降序对它们进行排序,到目前为止,我已经尝试过sorted()
,因为它用于st刺,其输出为['0', '1', '6', '6', '8'] ['X', 'X', 'X', 'X', 'X']
。我希望对每个单独的值进行排序,而不要对每个字符进行排序。任何帮助表示赞赏。
答案 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']