Python 如何将列表排序为[1,a,2,B,3,C,…]
我想将如下所示的列表排序:Python 如何将列表排序为[1,a,2,B,3,C,…],python,python-3.x,string,list,sorting,Python,Python 3.x,String,List,Sorting,我想将如下所示的列表排序:['3','6','B','2','1','C','a']如下:['1','a','2','B','3','C','6'] 提前谢谢 from itertools import zip_longest l = ['3', '6', 'B', '2', '1', 'C', 'A'] num = sorted(filter(str.isnumeric, l), key=lambda x: int(x)) ch = sorted(filter(str.isalpha, l)
['3','6','B','2','1','C','a']
如下:['1','a','2','B','3','C','6']
提前谢谢
from itertools import zip_longest
l = ['3', '6', 'B', '2', '1', 'C', 'A']
num = sorted(filter(str.isnumeric, l), key=lambda x: int(x))
ch = sorted(filter(str.isalpha, l))
[ e for t in zip_longest(num, ch) for e in t if e]
输出:
['1', 'A', '2', 'B', '3', 'C', '6']
首先,创建两个列表,一个包含表示数字的字符串,另一个包含字母的列表,然后使用列表理解和itertools.zip\u longest
对它们进行排序并组合。您可以尝试此方法
l=['3', '6', 'B', '2', '1', 'C', 'A']
sorted(['3', '6', 'B', '2', 'A', 'C', '1'],key=lambda x:(int(x),0) if x.isnumeric() else ((ord(x)-64)%26,1))
# ['1', 'A', '2', 'B', '3', 'C', '6']
由于数字的优先级更高,我对数字设置了
(int(x),0)
,对字母设置了((ord(x)-64)%26,1)
以打破僵局。您尝试过什么吗?您好,欢迎来到StackOverflow!您似乎认为StackOverflow是一个发布问题并获得一些代码作为回报的站点。事实并非如此。您的问题很可能很快就会被关闭甚至删除。为了防止将来发生这种情况,请和。特别是,我不清楚这种排序顺序背后的逻辑是什么。有多种解释方法会导致这种顺序。请检查以下问题:Nice usezip\u longest
+1@kederrac