PYTHON MEBY

Pythonで辞書のキーの型を変換(辞書内包表記)

この記事では、Pythonで辞書内包表記を使ってキーの型を変換する方法を解説します。文字列キーを数値キーに変換したり、その逆を行ったりする具体的な方法と、変換時に発生する可能性のあるエラーへの対処法を学びます。

目次

はじめに

Pythonの辞書は、キーと値のペアで構成されるデータ構造です。キーは通常、文字列や数値などの不変型でなければなりません。しかし、状況によっては、辞書のキーの型を変換する必要がある場合があります。例えば、文字列で表現された数値キーを数値型に変換して、数値によるソートや計算を行うなどが考えられます。この変換は、辞書内包表記を用いることで効率的に行うことができます。

辞書内包表記とは、既存の辞書から新しい辞書を生成する簡潔な方法です。既存の辞書の各要素に対して処理を行い、新しいキーと値のペアを作成することで、新しい辞書を構築します。これにより、キーの型変換も効率的に行うことができます。

文字列キーを数値キーに変換する

文字列で表現された数値キーを数値型(int型やfloat型)に変換するには、辞書内包表記の中で型変換関数(int()やfloat())を使用します。

my_dict = {"1": "one", "2": "two", "3": "three"}
new_dict = {int(k): v for k, v in my_dict.items()}
print(new_dict)

上記の例では、キーが文字列である辞書`my_dict`から、キーが数値である辞書`new_dict`が生成されます。`int(k)`の部分で、文字列キー`k`が数値に変換されています。

変換できないキーが含まれる場合、`ValueError`が発生します。エラーハンドリングについては、後述します。

数値キーを文字列キーに変換する

数値キーを文字列キーに変換するには、辞書内包表記の中で`str()`関数を使用します。

my_dict = {1: "one", 2: "two", 3: "three"}
new_dict = {str(k): v for k, v in my_dict.items()}
print(new_dict)

上記の例では、キーが数値である辞書`my_dict`から、キーが文字列である辞書`new_dict`が生成されます。`str(k)`の部分で、数値キー`k`が文字列に変換されています。

エラーハンドリング

キーの型変換が失敗した場合、`ValueError`が発生します。例えば、"1a"のような数値に変換できない文字列キーが含まれている場合です。

my_dict = {"1": "one", "1a": "two", "3": "three"}
try:
    new_dict = {int(k): v for k, v in my_dict.items()}
except ValueError:
    print("キーの型変換に失敗しました")

`try...except`ブロックを使用して、`ValueError`をキャッチし、エラーメッセージを表示することで、プログラムの堅牢性を高めることができます。

まとめ

Pythonの辞書内包表記を使用することで、キーの型変換を簡潔に記述できます。文字列と数値の相互変換だけでなく、他の型への変換にも応用可能です。ただし、変換できないキーが含まれる場合は`ValueError`が発生するため、適切なエラー処理を行うようにしましょう。

関連記事