我想按照以下两个标准对列表进行排序:
我目前正在使用:
from re import search
my_list = ['nelsonfreire87956423', 'martha34685128', 'gleen34685128', 'polini13452678']
first_sort = sorted(my_list, key=lambda x: [x])
sorted_list = sorted(
first_sort,
key=lambda x: search(r'\d{8}', x).group() if search(r'\d{8}', x) else []
)
print(sorted_list)它提供了所期望的结果:
['polini13452678', 'gleen34685128', 'martha34685128', 'nelsonfreire87956423']我想知道如何用一个sorted调用对这个列表进行排序。我的意思是,我如何将多个标准传递给sorted
发布于 2015-05-30 22:27:41
您的key函数可以返回一个元组,其中元组中每个位置的元素用于断开与前一个位置上的元素的联系。例如:
def my_key(s):
name, num = search(r'(\D+)(\d+)', s).groups()
return int(num), name其结果是:
>>> my_key('nelsonfreire87956423')
(87956423, 'nelsonfreire') # i.e. sort on number first, then name因此:
>>> sorted(my_list, key=my_key)
['polini13452678', 'gleen34685128', 'martha34685128', 'nelsonfreire87956423']https://stackoverflow.com/questions/30551912
复制相似问题