首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中对列表进行排序

在python中对列表进行排序
EN

Stack Overflow用户
提问于 2013-07-12 13:49:52
回答 4查看 1K关注 0票数 4

我的目标是对一个字符串列表进行排序,其中必须对单词进行排序alphabetically.Except以"s“开头的单词应该位于列表的开头(它们也应该进行排序),然后是其他单词。

下面的函数可以帮我做到这一点。

代码语言:javascript
运行
复制
def mysort(words):
    mylist1 = sorted([i for i in words if i[:1] == "s"])
    mylist2 = sorted([i for i in words if i[:1] != "s"])
    list = mylist1 + mylist2
    return list

我只是在寻找替代的方法来实现这一点,或者如果任何人可以发现上述代码的任何问题。

EN

Stack Overflow用户

发布于 2013-07-12 14:29:23

Integer答案中,我更喜欢使用元组,因为它更简洁,也更通用(适用于任意元素,而不仅仅是字符串):

代码语言:javascript
运行
复制
sorted(key=lambda x : ((1 if x[:1] in ("S", "s") else 2), x))

解释:

key参数允许根据f(item)的值对数组进行排序,而不是根据item的值对数组进行排序,其中f是一个仲裁函数。

在这种情况下,函数是匿名的(lambda),并返回一个元组,其中第一个元素是您希望元素结束的"group“(例如,如果字符串以"s”开头,则为1,否则为2)。

使用元组是可行的,因为元组比较在元素上是字典序的,因此在排序中,组码的权重将大于元素。

票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17608210

复制
相关文章

相似问题

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