【Python入門】セット(set)を辞書(dict)に変換する3つの方法
Pythonは、リスト・タプル・セット・辞書など、さまざまなデータ構造を柔軟に扱えるのが大きな魅力です。データをより効率的に活用したり、分析しやすくしたりするために、あるデータ構造を別のデータ構造へ変換したい場面はよくあります。
この記事では、Pythonのセット(set)を辞書(dict)に変換する方法を、3つのアプローチに分けてわかりやすく解説します。
方法1:zip() と dict() を組み合わせる
dict() 関数は、引数として受け取ったデータを辞書に変換できる便利な組み込み関数です。これに zip() 関数を組み合わせると、キーとなるセットと値となるセットをそれぞれまとめ、辞書の「キーと値のペア」として簡単に変換できます。
コード例
list_keys = {1, 2, 3, 4}
list_values = {'Mon', 'Tue', 'Wed', 'Thu'}
new_dict = dict(zip(list_keys, list_values))
print(new_dict)
print(type(new_dict))出力結果
{1: 'Mon', 2: 'Tue', 3: 'Thu', 4: 'Wed'}
<class 'dict'>なお、セットは順序を持たないデータ構造のため、実行環境によって要素の対応順序や表示順が変わる場合があります。キーと値の対応関係を厳密に制御したい場合は、リストなど順序のあるデータ構造を使うことをおすすめします。
方法2:dict.fromkeys() を使う
「キーはそれぞれ異なるが、すべての値は同じ」という辞書を作りたい場合には、dict.fromkeys() メソッドが最適です。第1引数にキーの集合、第2引数に共通の値を指定するだけで、一括して辞書を生成できます。
コード例
list_keys = {1, 2, 3, 4}
new_dict = dict.fromkeys(list_keys, 'Mon')
print(new_dict)
print(type(new_dict))出力結果
{1: 'Mon', 2: 'Mon', 3: 'Mon', 4: 'Mon'}
<class 'dict'>初期値をまとめて設定したいケース(例:フラグの初期化、カウンターの準備など)で特に役立つ方法です。
方法3:辞書内包表記を使う
Pythonらしい書き方として、辞書内包表記(dictionary comprehension)を使う方法もあります。考え方は dict.fromkeys() と似ていますが、内包表記なら値の生成ロジックを自由に記述できる点が大きなメリットです。
コード例
list_keys = {1, 2, 3, 4}
new_dict = {element: 'Tue' for element in list_keys}
print(new_dict)
print(type(new_dict))出力結果
{1: 'Tue', 2: 'Tue', 3: 'Tue', 4: 'Tue'}
<class 'dict'>たとえば {element: element * 10 for element in list_keys} のように式を変えれば、キーをもとに動的に値を計算することも可能です。
まとめ
セットを辞書に変換する主な方法は以下の3つです。
- zip() + dict():キー用と値用の2つのセットを対応付けて変換したいとき
- dict.fromkeys():すべてのキーに同じデフォルト値を設定したいとき
- 辞書内包表記:値を柔軟に制御しながら変換したいとき
用途に応じて使い分けることで、Pythonでのデータ処理がよりスムーズになります。ぜひ実際のコードで試してみてください。
-
Pythonでタプルを辞書に変換する方法【基本とキー・値の入れ替え】
Pythonでは、dict()関数を使うことで、タプルから辞書オブジェクトを簡単に作成できます。この関数は「タプルのタプル」(ネストされたタプル)を引数として受け取ります。各内側のタプルには、キーと値のペアが含まれている必要があります。 基本的な変換方法 最もシンプルなのは、キーと値のペアを持つタプルをそのままdict()に渡す方法です。 >>> t = ((1, a), (2, b)) >>> dict(t) {1: a, 2: b} この例では、タプル((1, a), (2, b))の各要素が、それぞれ辞書のキーと値として解釈され、結果として{1: a,
-
Pythonで文字列を辞書(dict)に変換する方法|ast.literal_evalとjson.loadsの使い分け
Pythonでは、文字列形式で表現された辞書データを実際のdictオブジェクトに変換したい場面がよくあります。主な方法としては、標準ライブラリの ast.literal_eval() を使う方法と、json モジュールを使う方法の2つがあります。それぞれの特徴と使い方を詳しく見ていきましょう。 方法1:ast.literal_eval() を使う ast.literal_eval() は、文字列をPythonの式として安全に評価する関数です。任意のコードを実行できてしまう eval() とは異なり、リテラル構造以外は評価しないため、セキュリティ面でも安心して利用できます。 評価できるのは、文