Python dict()の使い方5つの方法

Python dict()関数は、辞書を作成するために使用する便利な関数です。辞書はキー(key)と値(value)のペアでデータを保存し、この構造はデータの検索や処理に非常に役立ちます。この記事では、Pythonのdict()関数を使うさまざまな方法を紹介します。

Dictionaryとは?

Dictionary(辞書)は、Pythonで使用される「ハッシュマップ(HashMap)」形式のデータです。以下のように、中括弧 {} を使って作成できます。

Python
a = {"name": "Jack", "age": 38, "city": "Tokyo"}

上記のコードでは、name, age, cityがキーであり、”Jack”, 38, “Tokyo”が値です。次の図では、中括弧を使用して作成した辞書を確認できます。

図1. 中括弧を使用してPythonの辞書オブジェクトを作成
図1. 中括弧を使用してPythonの辞書オブジェクトを作成

Python dict() 関数で辞書を作成

dict() 関数は、辞書を作成するもう一つの方法です。この方法は可読性が高く、特にキーと値が明確な場合に多く使用されます。以下は、dict()を使って辞書を作成する例です。

Python
b = dict(name="Jack", age=38, city="Tokyo")

このように作成された辞書は、前述の中括弧 {} を使った方式と同じように機能します。違いは、dict() 関数を使用する場合、キーには必ず文字列を使う必要がある点です。

図2. Python dict() 関数で辞書を作成: キー=値の指定
図2. Python dict() 関数で辞書を作成: キー=値の指定

zip() 関数を使って辞書を作成

キーと値がそれぞれリスト形式で、キーの数と値の数が同じ場合、zip() 関数を使うと便利に辞書を作成できます。以下のコードも、先ほどと同じ辞書を作成します。

Python
c = dict(zip(["name", "age", "city"], ["Jack", 38, "Tokyo"]))

タプルのリスト形式データを辞書に変換

キーと値がタプルでペアになっていて、複数のタプルがリスト形式の場合も、以下のように辞書を作成できます。

Python
d = dict([("name", "Jack"), ("age", 38), ("city", "Tokyo")])

中括弧を使った方法

中括弧を使って宣言された辞書をdict()関数に渡すと、キーの順序が異なっていても同じ辞書が作成されます。dict()関数を使う場合、zip()や中括弧を使った方法にかかわらず、キーの順序を気にせず辞書を作成できます。

Python
e = dict({"city": "Tokyo", "name": "Jack", "age": 38})

キーと値を組み合わせて辞書を作成

一部の値を中括弧形式で渡し、新しい値を追加する場合、2つの方法を組み合わせた形で辞書を作成できます。

Python
f = dict({"name": "Jack", "city": "Tokyo"}, age=38)

下の図から、興味深いことに、上記のすべての方法が同じ辞書を作成していることがわかります。辞書ではキーの順序は重要ではないため、すべて同じ辞書として扱われます。

図3. Python dict(): さまざまな方法で辞書を作成
図3. Python dict(): さまざまな方法で辞書を作成

辞書作成時の注意点

辞書を作成するのは簡単ですが、いくつか注意点があります。

キーはユニークである必要があります

辞書のキーは重複できません。中括弧を使って辞書を作成する場合、重複するキーがあると、最後に入力された値だけが保存されます。dict() 関数を使った場合、”SyntaxError: keyword argument repeated: variable_name”のようなエラーメッセージでキーが重複していることが通知されます。

図4. 辞書には同じキーを使用できない
図4. 辞書には同じキーを使用できない

キーにはハッシュ可能なデータ型のみ使用可能

辞書のキーには、文字列や数値などの変更不可能(immutable)なデータ型のみ使用可能です。リストのような変更可能(mutable)なデータ型は、キーとして使用できません。

図5. 辞書のキーには文字列や数値が使用できる
図5. 辞書のキーには文字列や数値が使用できる

dict()使用時には文字列のみキーとして使用可能

辞書は文字列や数値をキーに使用できますが、dict()関数を使って辞書を作成する場合は、文字列のみがキーとして使用できます。このような場合、’SyntaxError: expression cannot contain assignment, perhaps you meant “==”?’ というエラーメッセージが表示されます。これは通常、比較演算子(==)を使うべきところを、代入演算子(=)を誤って使用した場合に発生します。

図6. Python dict()関数使用時には文字列のみキーとして使用できる
図6. Python dict()関数使用時には文字列のみキーとして使用できる

まとめ

Pythonの辞書(dict)は、キーと値のペアでデータを保存し、効率的に管理できるデータ型です。辞書を使う際には、キーがユニークであることと、キーにハッシュ可能なデータ型のみ使用できる点に注意が必要です。これらをうまく活用すれば、Pythonでデータをより効率的に扱えるようになるでしょう。

リファレンス

関連ポスト

コメントする