Pythonで辞書(dict)のキーと値を小文字に変換する方法
Pythonの辞書(dict)に含まれるキーや値をすべて小文字に変換したい場合、最もシンプルなのは items() メソッドで各要素をループ処理し、新しい辞書を作り直す方法です。ここでは、基本的な変換方法から、キーだけを変換する応用例、実装時の注意点まで順番に解説します。
キーと値の両方を小文字に変換する
辞書のキーと値をまとめて小文字化するには、以下のように関数を定義します。文字列メソッド lower() をキーと値の両方に適用し、新しい辞書を生成しています。
def lower_dict(d):
new_dict = dict((k.lower(), v.lower()) for k, v in d.items())
return new_dict
a = {'Foo': "Hello", 'Bar': "World"}
print(lower_dict(a))
このコードを実行すると、次のような出力が得られます。
{'foo': 'hello', 'bar': 'world'}
大文字だった Foo や Hello が、すべて小文字に変換されているのが確認できます。
キーだけを小文字に変換する
値はそのまま残し、キーのみを小文字にしたい場合は、lower() をキー側にだけ適用します。
def lower_dict(d):
new_dict = dict((k.lower(), v) for k, v in d.items())
return new_dict
a = {'Foo': "Hello", 'Bar': "World"}
print(lower_dict(a))
実行結果は以下のとおりです。
{'foo': 'Hello', 'bar': 'World'}
このように、変換対象を選ぶことで柔軟に対応できます。
辞書内包表記を使ったより簡潔な書き方
dict() の代わりに辞書内包表記を使うと、さらに読みやすいコードになります。
def lower_dict(d):
return {k.lower(): v.lower() for k, v in d.items()}
動作は先ほどの例とまったく同じですが、Pythonらしい簡潔な記述になっています。
実装時の注意点
- 値が文字列である必要がある:
v.lower()を呼び出すため、値が数値やリストなど文字列以外の場合はAttributeErrorが発生します。必要に応じてstr(v).lower()のように型変換を挟むか、条件分岐で対応しましょう。 - キーの重複に注意: 小文字化によって異なるキーが同じ文字列になる場合(例:
"Foo"と"foo")、後から処理した要素で上書きされるため、データによっては意図しない結果になることがあります。 - 元の辞書は変更されない: この方法では常に新しい辞書が生成されます。元の辞書自体を書き換えたい場合は、作成した辞書を元の変数に代入し直してください。
以上のように、ループ処理や辞書内包表記を組み合わせることで、Pythonの辞書のキー・値を簡単に小文字へ変換できます。用途に合わせて、キーのみ・値のみ・両方のパターンを使い分けてみてください。
-
Pythonで文字列を辞書(dict)に変換する方法|ast.literal_evalとjson.loadsの使い分け
Pythonでは、文字列形式で表現された辞書データを実際のdictオブジェクトに変換したい場面がよくあります。主な方法としては、標準ライブラリの ast.literal_eval() を使う方法と、json モジュールを使う方法の2つがあります。それぞれの特徴と使い方を詳しく見ていきましょう。 方法1:ast.literal_eval() を使う ast.literal_eval() は、文字列をPythonの式として安全に評価する関数です。任意のコードを実行できてしまう eval() とは異なり、リテラル構造以外は評価しないため、セキュリティ面でも安心して利用できます。 評価できるのは、文
-
Pythonで文字列内の大文字をすべて小文字に変換する方法
Pythonのlower()メソッドを使った大文字から小文字への変換Pythonでは、文字列オブジェクトが持つ lower() メソッドを使用することで、文字列内のすべての大文字を簡単に小文字へ変換できます。基本的な使い方以下のように、変換したい文字列に対して lower() を呼び出すだけです。>>> Jane Doe N.Y..lower() jane doe n.y.この例では、元の文字列「Jane Doe N.Y.」に含まれる大文字(J、D、N、Y)がすべて小文字に変換され、「jane doe n.y.」という結果が返されます。ポイントlower() メソッドは元の文