可以将字符串中的字符按字母顺序排列,无论是大写还是小写?我需要他们留在他们所处的情况下,所以我不能使用.lower()
或.upper()
,但我希望他们以优先的字母排列,所以结果字符串会是这样的:
"LMmqRRs"
而不是
"LMRRmqs"
答案 0 :(得分:4)
这可以确保大写字母首先出现:
s = 'mqRMRsL'
result = ''.join(sorted(s, key=lambda c:(c.lower(), c)))
# LMmqRRs
这不是:
s = 'mqRMRsL'
result = ''.join(sorted(s, key=str.lower))
# LmMqRRs
答案 1 :(得分:2)
这是对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'