Python如何按子列表第二个元素实现不区分大小写的字母排序
解决Python不区分大小写的嵌套列表排序问题
Python默认的字符串排序基于ASCII码值,大写英文字母的ASCII码范围是65-90,小写是97-122,因此所有大写字符串的排序优先级天然高于小写,才会出现大写全部排在小写前面的情况。
你只需要修改sorted的key参数,将用于排序的字符串统一转为小写(或大写)后再做排序即可,修改后的代码如下:
data = [[0, "ba"], [0, "ab"], [0, "BB"], [0, "AA"]] print(sorted(data, key=lambda x: x[1].lower()))
运行后输出和你期望的结果完全一致:
[[0, 'AA'], [0, 'ab'], [0, 'ba'], [0, 'BB']]
如果需要适配非英语字符的本地化不区分大小写排序,可以使用标准库locale模块的相关函数配置排序规则,普通英文字母场景下上述方案已经完全够用。
内容的提问来源于stack exchange,提问作者Yılmaz Alpaslan
相关产品推荐
相关产品推荐

