如何按字母顺序排列字符串中的字符,而不考虑大小写?

2024-09-30 20:39:11 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有可能把字符串中的字符按字母顺序排列,而不考虑大小写?我需要它们保持在它们所在的大小写中,所以我不能使用.lower()或{},但我希望它们以字母优先排列,因此结果字符串将类似于:

"LMmqRRs"

而不是

"LMRRmqs"


Tags: 字符串字母字符lowerlmrrmqslmmqrrs
2条回答

这样可以确保大写字母在前:

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

这不是:

^{pr2}$

以下是对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'

相关问题 更多 >