我有以下代码:
v = ['zack', 'timor', 'Topher']
v.sort()
print(v)'Topher',‘帝汶’,'zack‘
我想得到的是:
‘帝汶’,'Topher','zack‘
这是正确的字母顺序。
基本上它应该忽略上下字母之间的区别。我不能只做更低的(),因为['timor','topher', 'zack']不是期望的输出。
简单地说,我希望将它与以下规则进行比较:a=A, b=B, ...,我如何做到这一点?
发布于 2020-05-09 21:23:01
发布于 2020-05-09 21:22:40
您可以为排序指定一个键函数。这将对这些数据进行如下操作:
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())将稳定排序--这意味着它通过低优先级排序,并保持原始列表的出现顺序。
看见
发布于 2020-05-09 21:25:15
在排序中添加一个键,例如:
def case_insensitive_sort(a):
return a.lower()
v = ['zack', 'timor', 'Topher']
v.sort(key=case_insensitive_sort)
print(v)https://stackoverflow.com/questions/61703884
复制相似问题