Pythonでは、リストのソートに sort()
メソッドや sorted()
関数を使用します。しかし、これらのメソッドと関数はデフォルトでは大文字と小文字を区別します。つまり、大文字が先に来て、その後に小文字が続くようにソートされます。
しかし、大文字と小文字を区別せずにリストをソートしたい場合はどうすればよいでしょうか?そのためには、key
引数に str.lower
や str.casefold
を指定します。
以下に具体的なコードを示します。
# 大文字小文字を区別せずにソートする
lst = ['Zebra', 'apple', 'Banana', 'mango', 'Apricot', 'kiwi', 'Papaya']
sorted_lst = sorted(lst, key=str.lower)
print(sorted_lst)
# 出力: ['apple', 'Apricot', 'Banana', 'kiwi', 'mango', 'Papaya', 'Zebra']
このコードでは、str.lower
を key
引数に指定しています。これにより、ソートの際に各要素が小文字に変換され、その結果が比較に使用されます。元のリストの要素自体は変更されません。
なお、Python 3.3以降では str.casefold
を使用することもできます。str.casefold
は、str.lower
と同様に文字列を小文字に変換しますが、一部の特殊なケース(例えばドイツ語のエスツェット(ß)を「ss」に変換するなど)をより適切に処理します。
以上が、Pythonで大文字小文字を無視したリストのソート方法です。この方法を使えば、大文字と小文字を区別せずにリストを簡単にソートすることができます。