0

大文字と小文字を無視して、文字列内の文字をアルファベット順に並べることは可能ですか?.lower()またはを使用できないので、それらが入っている場合にとどまる必要がありますが.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 に答える