首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将字符串列表按字母顺序与上下值排序?

如何将字符串列表按字母顺序与上下值排序?
EN

Stack Overflow用户
提问于 2020-05-09 21:19:17
回答 3查看 124关注 0票数 3

我有以下代码:

代码语言:javascript
复制
v = ['zack', 'timor', 'Topher']
v.sort()
print(v)

'Topher',‘帝汶’,'zack‘

我想得到的是:

‘帝汶’,'Topher','zack‘

这是正确的字母顺序。

基本上它应该忽略上下字母之间的区别。我不能只做更低的(),因为['timor','topher', 'zack']不是期望的输出。

简单地说,我希望将它与以下规则进行比较:a=A, b=B, ...,我如何做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-09 21:23:01

好的,所以排序函数允许您指定一个键来比较元素;

v.sort(key=str.lower)

来源:https://docs.python.org/3/howto/sorting.html

票数 8
EN

Stack Overflow用户

发布于 2020-05-09 21:22:40

您可以为排序指定一个键函数。这将对这些数据进行如下操作:

代码语言:javascript
复制
v = ['zack', 'timor', 'Topher', 'Quark', "quark"]
v.sort( key= lambda x: x.lower())
print(v)

v = ['zack', 'timor', 'Topher', 'Quark', "quark"]
v.sort( key= lambda x: (x.lower(), x[0].isupper()))  # this will sort lower before upper
print(v)

['Quark', 'quark', 'timor', 'Topher', 'zack']  # keep original order
['quark', 'Quark', 'timor', 'Topher', 'zack']  # always lower before upper, only 1st char

但是v.sort( key= lambda x: x.lower())将稳定排序--这意味着它通过低优先级排序,并保持原始列表的出现顺序。

看见

票数 4
EN

Stack Overflow用户

发布于 2020-05-09 21:25:15

在排序中添加一个键,例如:

代码语言:javascript
复制
def case_insensitive_sort(a):
    return a.lower()

v = ['zack', 'timor', 'Topher']
v.sort(key=case_insensitive_sort)
print(v)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61703884

复制
相关文章

相似问题

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