问题描述:
使用python默认排序函数的时候,大写字母会排在前面,如果希望小写字母排在前面,可以这样写:
# 未排序的字符串
letters = list('aCbBcA')
# 排序后的字符串
letters = sorted(letters , key=lambda x: ord(x) + 100 if x.isupper() else ord(x))
原因:
python中默认的排序函数sort或者sorted,在给字符串排序的时候,是按照ASCII码排序的,大写字母A的序号是65,小写字母a的序号是97,所以默认排序的时候大写字母会在小写字母前面。
详细:
使用排序函数时,指定这样一个key函数,用来给输入变量取ASCII码,但是如果输入变量是大写字母,则让他的ASCII码大一些,以保证小写字母的ASCII码会排在大写字母的前面。
使用lambda函数表达出来就是这样:
lambda x: ord(x) + 100 if x.isupper() else ord(x)
其中,
ord()表示取ASCII码
x.isupper()表示判断x是否为大写字母