Python 3.x 对包含数值的列表进行排序
我有一张名单叫Python 3.x 对包含数值的列表进行排序,python-3.x,Python 3.x,我有一张名单叫 my_list=['C3', 'D10', 'A14', 'C103', 'B16', 'C9','AD24'] 我想对这个列表进行排序,并有如下输出 my_list=['A14', 'AD24', 'B16', 'C3', 'C9', 'C103', 'D10'] 我不确定在我的关键功能中需要实现什么逻辑 def my_func(x):
my_list=['C3', 'D10', 'A14', 'C103', 'B16', 'C9','AD24']
我想对这个列表进行排序,并有如下输出
my_list=['A14', 'AD24', 'B16', 'C3', 'C9', 'C103', 'D10']
我不确定在我的关键功能中需要实现什么逻辑
def my_func(x):
result = ''
my_str = ''.join([str(ord(elem)) if elem.isalpha() else elem for elem in x])
for elem in my_str:
result += elem
return result
然后,当我尝试这一点,我没有得到想要的输出
sorted(my_list, key=my_func)
['A14', 'AD24', 'B16', 'C103', 'C3', 'C9', 'D10']
你知道我哪里出错了吗
import re
my_list=['C3', 'D10', 'A14', 'C103', 'B16', 'C9']
a = re.compile('([0-9]+)')
def sort(b):
return [int(text) if text.isdigit() else text.lower()
for text in re.split(a, b)]
my_list.sort(key=sort)
print (my_list)
样本输出:
['A14', 'B16', 'C3', 'C9', 'C103', 'D10']
我想这可能行得通。这是自然排序,我在练习代码文件中的某个地方有此功能。您可以像这样使用
natsort
模块
from natsort import natsorted, ns
x = ['C3', 'D10', 'A14', 'C103', 'B16', 'C9','AD24']
y = natsorted(x, alg=ns.IGNORECASE)
print(y)
将输出:
['A14', 'AD24', 'B16', 'C3', 'C9', 'C103', 'D10']
开头是否只有一个字符,或者它是可变的?可能有数量可变的字符,如BB2027