首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序标准-排序()

排序标准-排序()
EN

Stack Overflow用户
提问于 2015-05-30 22:17:42
回答 1查看 64关注 0票数 0

我想按照以下两个标准对列表进行排序:

  1. 数阶
  2. 字母顺序。

我目前正在使用:

代码语言:javascript
复制
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)

它提供了所期望的结果:

代码语言:javascript
复制
['polini13452678', 'gleen34685128', 'martha34685128', 'nelsonfreire87956423']

我想知道如何用一个sorted调用对这个列表进行排序。我的意思是,我如何将多个标准传递给sorted

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-30 22:27:41

您的key函数可以返回一个元组,其中元组中每个位置的元素用于断开与前一个位置上的元素的联系。例如:

代码语言:javascript
复制
def my_key(s):
    name, num = search(r'(\D+)(\d+)', s).groups()
    return int(num), name

其结果是:

代码语言:javascript
复制
>>> my_key('nelsonfreire87956423')
(87956423, 'nelsonfreire')  # i.e. sort on number first, then name

因此:

代码语言:javascript
复制
>>> sorted(my_list, key=my_key)
['polini13452678', 'gleen34685128', 'martha34685128', 'nelsonfreire87956423']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30551912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档