首页 > 解决方案 > 如何通过将不同大小写的相同字母视为python中的相同字母来按字母顺序对列表进行排序

问题描述

如果输入是这样的['z','t','Z','a','b','A','d'],那么在排序后我想得到像['a','A','b','d','t','z','Z']或这样的输出['A','a','b','d','t','Z','z']

标签: pythonpython-3.x

解决方案


这将始终首先排序大写字母:

lst = ['z','t','Z','a','b','A','d']

print(sorted(lst, key=lambda k: 2*ord(k.lower()) + k.islower()))

印刷:

['A', 'a', 'b', 'd', 't', 'Z', 'z']

编辑感谢评论中的@MadPhysicist,另一个变体:

print(sorted(lst, key=lambda k: (k.lower(), k.islower())))

推荐阅读