如何将字符串中的字符按字母顺序排列,忽略大写和小写?

时间:2012-11-02 18:10:09

标签: python python-3.x

可以将字符串中的字符按字母顺序排列,无论是大写还是小写?我需要他们留在他们所处的情况下,所以我不能使用.lower().upper(),但我希望他们以优先的字母排列,所以结果字符串会是这样的:

"LMmqRRs"

而不是

"LMRRmqs"

2 个答案:

答案 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'