大文字と小文字を無視して、文字列内の文字をアルファベット順に並べることは可能ですか?.lower()
またはを使用できないので、それらが入っている場合にとどまる必要がありますが.upper()
、文字を優先して配置したいので、結果の文字列は次のようになります。
"LMmqRRs"
それ以外の
"LMRRmqs"
大文字と小文字を無視して、文字列内の文字をアルファベット順に並べることは可能ですか?.lower()
またはを使用できないので、それらが入っている場合にとどまる必要がありますが.upper()
、文字を優先して配置したいので、結果の文字列は次のようになります。
"LMmqRRs"
それ以外の
"LMRRmqs"
これにより、大文字が最初に表示されます。
s = 'mqRMRsL'
result = ''.join(sorted(s, key=lambda c:(c.lower(), c)))
# LMmqRRs
これはしません:
s = 'mqRMRsL'
result = ''.join(sorted(s, key=str.lower))
# LmMqRRs
ソートを安定させるために、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'