是否可以按字母顺序排列字符串中的字符,而不考虑大小写?我需要它们留在它们所在的情况下,所以我不能使用.lower()
or .upper()
,但我希望它们以字母优先的方式排列,因此生成的字符串将类似于:
"LMmqRRs"
代替
"LMRRmqs"
是否可以按字母顺序排列字符串中的字符,而不考虑大小写?我需要它们留在它们所在的情况下,所以我不能使用.lower()
or .upper()
,但我希望它们以字母优先的方式排列,因此生成的字符串将类似于:
"LMmqRRs"
代替
"LMRRmqs"
这确保大写字母排在第一位:
s = 'mqRMRsL'
result = ''.join(sorted(s, key=lambda c:(c.lower(), c)))
# LMmqRRs
这不会:
s = 'mqRMRsL'
result = ''.join(sorted(s, key=str.lower))
# LmMqRRs
这是对 BlaXpirit 解决方案的轻微改动,以使排序稳定:
def alphabet_cmp(a, b):
a_lower, b_lower = a.lower(), b.lower()
if a_lower == b_lower:
return cmp(a, b)
else:
return cmp(a_lower, b_lower)
x = 'ABcdCDab'
''.join(sorted(x, cmp=alphabet_cmp))
# 'AaBbCcDd'