0

是否可以按字母顺序排列字符串中的字符,而不考虑大小写?我需要它们留在它们所在的情况下,所以我不能使用.lower()or .upper(),但我希望它们以字母优先的方式排列,因此生成的字符串将类似于:

"LMmqRRs"

代替

"LMRRmqs"

4

2 回答 2

4

这确保大写字母排在第一位:

s = 'mqRMRsL'
result = ''.join(sorted(s, key=lambda c:(c.lower(), c)))
# LMmqRRs

这不会:

s = 'mqRMRsL'
result = ''.join(sorted(s, key=str.lower))
# LmMqRRs
于 2012-11-02T18:18:34.550 回答
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'
于 2012-11-02T19:56:49.287 回答