简体   繁体   English

按倒数第二个字符对字符串列表进行排序

[英]Sort a list of strings by second-to-last character

I need to sort a list of strings using character comparison starting with penultimate element moving down to the beginning of string (for equal characters).我需要使用字符比较对字符串列表进行排序,从倒数第二个元素向下移动到字符串的开头(对于相等的字符)。 so basically I need to get this所以基本上我需要得到这个

in_ = ['message', 'essagem', 'ssageme', 'sagemes', 'agemess', 'gemessa', 'emessag']

result = ['emessag', 'essagem', 'sagemes', 'message', 'ssageme', 'agemess', 'gemessa']
# sorted on second to last character in each string

Is this what you want?这是你想要的吗? If yes, make that penultimate letter the key for the sort() function.如果是,则将该倒数第二个字母作为sort()函数的键。

a = ['message', 'essagem', 'ssageme', 'sagemes', 'agemess', 'gemessa', 'emessag']
a.sort(key=lambda x:x[-2])
print(a)

Output:输出:

['emessag', 'essagem', 'sagemes', 'message', 'ssageme', 'agemess', 'gemessa']

Just to add something alternative to Miraj50's answer: You can do it using itemgetter too in a bit cleaner/faster way .只是为 Miraj50 的答案添加一些替代方法:您也可以使用itemgetter更清洁/更快的方式来完成

from operator import itemgetter

in_list = ['message', 'essagem', 'ssageme', 'sagemes', 'agemess', 'gemessa', 'emessag']
result = sorted(in_list, key=itemgetter(-2))
print(result)

output:输出:

['emessag', 'essagem', 'sagemes', 'message', 'ssageme', 'agemess', 'gemessa']

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM