Pythonのdict(辞書)の解説
- 作成日: 2025-07-08
- 更新日: 2025-07-11
- カテゴリ: 基本
- タグ: dict, 辞書
この記事ではPythonのdict(辞書)を解説します。
参考ドキュメントは以下になります。
出典:5. 辞書型 (dictionary) — データ構造 — Python 3.13.5 ドキュメント
Pythonのdictとは?
Pythonのdictは、キーと値をペアにしてアイテムを格納できるデータ構造です。
出典:5. 辞書型 (dictionary) — データ構造 — Python 3.13.5 ドキュメント
たとえば「cat」というキーに「1」という値を持たせたいとします。
そういう場合は以下のようにします。
d = {'cat': 1}
print(d) # {'cat': 1}
上記のブレース({}
)で囲んだオブジェクトが辞書です。変数dには辞書が保存されます。
複数のキーと値を定義することもできます。
d = {'cat': 1, 'bird': '222', 'pig': 3.14}
print(d) # {'cat': 1, 'bird': '222', 'pig': 3.14}
辞書は他言語ではハッシュマップと呼ばれることもあります。色々な言語で標準で実装されているたいへん人気のあるデータ構造の1つです。
Pythonのdictでアイテムを追加するには?
Pythonのdictにアイテムを追加するには、キーに値を設定します。
出典:5. 辞書型 (dictionary) — データ構造 — Python 3.13.5 ドキュメント
d = {} # 辞書の作成
d['cat'] = 1 # キーcatに値1をセット
d['bird'] = 2 # キーbirdに値2をセット
print(d) # {'cat': 1, 'bird': 2}
d['cat']
と言うように、変数に角かっこを付けてキーを指定すると、そのキーの値にアクセスできます。代入演算子=
でその値を上書きすることができます。キーが存在しない場合は新しくキーが作られて値が代入されます。
Pythonのdictにupdateでアイテムを追加するには?
Pythonのdictのメソッド、updateを使うと複数のアイテムを辞書に追加できます。
出典:5. 辞書型 (dictionary) — データ構造 — Python 3.13.5 ドキュメント
d = {'cat': 1}
d.update(bird=2, pig=3)
print(d) # {'cat': 1, 'bird': 2, 'pig': 3}
d.update(bird=2, pig=3)
で、キーに対して値をキー=値
という形で指定します。こうするとアイテムを追加できます。
また、updateの引数はイテラブルの形でも追加できます。
d = {'cat': 1}
d.update([('bird', 2), ('pig', 3)])
print(d) # {'cat': 1, 'bird': 2, 'pig': 3}
[('bird', 2), ('pig', 3)]
という風に、アイテムをタプルで作り、タプルの0番目の要素をキー、タプルの1番目の要素を値にします。タプルを複数にすることで複数のアイテムを追加できます。
あるいはzipで異なるリストやタプルをまとめて、updateに指定することもできます。
d = {'cat': 1}
lis = ['bird', 'pig']
tup = (2, 3)
d.update(zip(lis, tup))
print(d) # {'cat': 1, 'bird': 2, 'pig': 3}
上記の場合はlis
がキーに、tup
が値になります。
Pythonのdictをfor文で回すには?
Pythonのdictはfor文で回すことができます。
出典:5. 辞書型 (dictionary) — データ構造 — Python 3.13.5 ドキュメント
出典:8. for文 — 複合文 (compound statement) — Python 3.13.5 ドキュメント
関連記事:Pythonのfor文(繰り返し処理、ループ)を解説【range, enumerate】
d = {'cat': 1, 'bird': 2, 'pig': 3}
for key in d:
print(key, d[key])
cat 1
bird 2
pig 3
辞書はそのままfor文のinの右側に指定すると、inの左側の変数にキーを代入していきます。
キーを辞書に角かっこで指定することでそのキーに対応する値を得ることができます。
Pythonのdictのkeysメソッドでfor文を回すには?
Pythonのdictのメソッドkeysを使うことで辞書からキーだけを取り出せます。
d = {'cat': 1, 'bird': 2, 'pig': 3}
for key in d.keys():
print(key, d[key])
cat 1
bird 2
pig 3
Pythonのdictのvaluesメソッドでfor文を回すには?
Pythonのdictのメソッドvaluesを使うと、辞書の値だけを取り出すことができます。
d = {'cat': 1, 'bird': 2, 'pig': 3}
for value in d.values():
print(value)
1
2
3
Pythonのdictのitemsメソッドでfor文を回すには?
Pythonのdictのメソッドitemsを使うと、キーと値を辞書から取り出すことができます。
d = {'cat': 1, 'bird': 2, 'pig': 3}
for key, value in d.items():
print(key, value)
cat 1
bird 2
pig 3
Pythonのdictでkeyが存在するか確かめるには?
Pythonのdictでキーが存在するか確かめるにはin
演算子を使います。
出典:6. 所属検査演算式 — (expression) — Python 3.13.5 ドキュメント
出典:5. 辞書型 (dictionary) — データ構造 — Python 3.13.5 ドキュメント
d = {'cat': 1, 'bird': 2, 'pig': 3}
print('cat' in d) # True
print('bird' in d) # True
print('pig' in d) # True
print('dog' in d) # False
キー in 辞書
という形でキーが辞書に存在するか確認することができます。キーが辞書に存在しないことを確かめたい場合はnot in
を使います。
d = {'cat': 1, 'bird': 2, 'pig': 3}
print('cat' not in d) # False
print('bird' not in d) # False
print('pig' not in d) # False
print('dog' not in d) # True
上記の場合は辞書d
にはdog
が存在していないので、not in
の結果がTrueになります。
Pythonのdictでgetで値を得るには?
Pythonのdictのメソッド、getでキーから値を得ることができます。
出典:5. 辞書型 (dictionary) — データ構造 — Python 3.13.5 ドキュメント
d = {'cat': 1, 'bird': 2}
print(d.get('cat')) # 1
print(d.get('bird')) # 2
キーが辞書に存在しない場合はgetはNoneを返します。
d = {'cat': 1, 'bird': 2}
print(d.get('pig')) # None
getの第2引数にデフォルト値を指定することができます。これはキーが存在しない場合はgetの返り値になります。
d = {'cat': 1, 'bird': 2}
print(d.get('pig', 3)) # 3
Pythonのdictからkeyを取得するには?
Pythonのdictからキーを取得する方法を解説します。
出典:5. 辞書型 (dictionary) — データ構造 — Python 3.13.5 ドキュメント
Pythonのdictのkeysメソッドをkeyを取得するには?
Pythonのdictのkeysメソッドでキーの列を取得できます。
d = {'cat': 1, 'bird': 2, 'pig': 3}
keys = d.keys()
print(keys) # dict_keys(['cat', 'bird', 'pig'])
keys = list(keys)
print(keys[0]) # cat
print(keys[1]) # bird
print(keys[2]) # pig
dict_keys
はそのままでインデックス・アクセスができないのでリストなどに変換して参照します。
Pythonのdictのkeyをリスト内包表記で取得するには?
Pythonのdictのキーをリスト内包表記で取得できます。
d = {'cat': 1, 'bird': 2, 'pig': 3}
keys = [key for key in d]
print(keys) # ['cat', 'bird', 'pig']
辞書d
はfor文に渡すとキーをinの左側の変数に代入していきます。これをリスト内包表記の要素として取り出します。
Pythonのdictのkeyを値から取得するには?
Pythonのdictのキーを値から取得する方法です。
d = {'cat': 1, 'bird': 1, 'pig': 2}
target = 1
keys = [key for key in d if d[key] == target]
print(keys) # ['cat', 'bird']
リスト内包表記で、目的の辞書の値(target
)にマッチするアイテムのキーをリストにしています。
Pythonのdictでアイテムを削除するには?
Pythonのdictでアイテムを削除するにはdel
を使います。
出典:5. 辞書型 (dictionary) — データ構造 — Python 3.13.5 ドキュメント
d = {'cat': 1, 'bird': 2, 'pig': 3}
del d['cat']
print(d) # {'bird': 2, 'pig': 3}
dictのメソッドのpopを使うと、指定したキーのアイテムを削除できます。
d = {'cat': 1, 'bird': 2, 'pig': 3}
print(d.pop('cat')) # 1
print(d) # {'bird': 2, 'pig': 3}
popメソッドはキーが存在しない場合はKeyErrorを送出します。
d = {'cat': 1, 'bird': 2, 'pig': 3}
try:
d.pop('dog')
except KeyError as e:
print(e) # 'dog'
Pythonでdictを結合(連結・マージ)するには?
Pythonでdictに別の辞書を結合するにはupdateメソッドや|
演算子を使います。
出典:5. 辞書型 (dictionary) — データ構造 — Python 3.13.5 ドキュメント
Pythonのdictをupdateで結合するには?
Pythonのdictのメソッド、updateを使うと辞書に別の辞書を結合できます。
d1 = {'cat': 1, 'bird': 2}
d2 = {'pig': 3, 'frog': 4}
d1.update(d2)
print(d1) # {'cat': 1, 'bird': 2, 'pig': 3, 'frog': 4}
上記ではd1の辞書にd2の辞書を結合しています。辞書のupdateメソッドに別の辞書を渡すとその辞書が結合されます。
重複するキーがあった場合は、updateに渡した辞書のキーで上書きされます。
d1 = {'cat': 1, 'bird': 2}
d2 = {'bird': 3, 'frog': 4}
d1.update(d2)
print(d1) # {'cat': 1, 'bird': 3, 'frog': 4}
Pythonのdictを`|`演算子で結合するには?
Pythonの辞書同士は|
演算子で結合できます。
d1 = {'cat': 1, 'bird': 2}
d2 = {'pig': 3, 'frog': 4}
d3 = d1 | d2
print(d3) # {'cat': 1, 'bird': 2, 'pig': 3, 'frog': 4}
上記ではd1
とd2
の辞書を|
演算子で結合してd3
に代入しています。updateメソッドと同様に同じキーが存在する場合は後者のキーで上書きされます。
d1 = {'cat': 1, 'bird': 2}
d2 = {'bird': 3, 'frog': 4}
d3 = d1 | d2
print(d3) # {'cat': 1, 'bird': 3, 'frog': 4}
Pythonのdictを`|=`演算子で結合するには?
Pythonの辞書に|=
演算子を使うと別の辞書を結合できます。
d1 = {'cat': 1, 'bird': 2}
d2 = {'pig': 3, 'frog': 4}
d1 |= d2
print(d1) # {'cat': 1, 'bird': 2, 'pig': 3, 'frog': 4}
|=
演算子も同じキーが存在する場合は上書きする辞書のキーで上書きされます。
d1 = {'cat': 1, 'bird': 2}
d2 = {'bird': 3, 'frog': 4}
d1 |= d2
print(d1) # {'cat': 1, 'bird': 3, 'frog': 4}
Pythonのdictを`dict()`や`{}`で結合するには?
Pythonのdictは以下のようにすると結合できます。
d1 = {'cat': 1, 'bird': 2}
d2 = {'pig': 3, 'frog': 4}
d3 = dict(**d1, **d2)
d4 = {**d1, **d2}
print(d3) # {'cat': 1, 'bird': 2, 'pig': 3, 'frog': 4}
print(d4) # {'cat': 1, 'bird': 2, 'pig': 3, 'frog': 4}
**
演算子で辞書を展開できます。以下は展開して関数の引数にキーをマッチさせています。
def func(cat, bird):
print(cat, bird) # 1 2
d1 = {'cat': 1, 'bird': 2}
func(**d1)
これをdict()
や{}
で行うと、アイテムをセットすることができます。また、{}
は重複したキーは上書きされますが、dict()
は重複したキーはTypeErrorになるので注意しましょう。
d1 = {'cat': 1, 'bird': 2}
d2 = {'bird': 3, 'frog': 4} # birdが重複している
# {}は同じキーは上書きされる。
d3 = {**d1, **d2}
print(d3) # {'cat': 1, 'bird': 3, 'frog': 4}
# dict()は同じキーはTypeErrorになる。
try:
dict(**d1, **d2)
except TypeError as e:
print(e)
Pythonのdictをsort(ソート、整列)するには?
Pythonのdictは、keysやvalues, itemsなどのメソッドを持っています。これらで取得したリストなどをソートするには、sortメソッドやsorted関数を使います。
出典:ソートのテクニック — Python 3.13.5 ドキュメント
sortメソッドはオブジェクトを破壊的にソートします。sorted関数は非破壊的にソートします。破壊的と言うのはオブジェクトの中身を変更するということです。非破壊的と言うのは、ソート後に新しいオブジェクトを返す、と言う意味です。
dictのkeysメソッドはキーの列を返し、valuesメソッドは値の列を返します。itemsメソッドはキーと値のタプル列を返します。
d = {'cat': 2, 'bird': 1, 'pig': 3}
print(sorted(d.keys())) # ['bird', 'cat', 'pig']
print(sorted(d.values())) # [1, 2, 3]
# タプル列をキーでソート
print(sorted(d.items(), key=lambda item: item[0]))
# [('bird', 1), ('cat', 2), ('pig', 3)]
# タプル列を値でソート
print(sorted(d.items(), key=lambda item: item[1]))
# [('bird', 1), ('cat', 2), ('pig', 3)]
PythonのdictをJSONに変換するには?
PythonのdictをJSONに変換するにはjsonモジュールのdumpsメソッドを使います。
出典:json --- JSON エンコーダーとデコーダー — Python 3.13.5 ドキュメント
import json
d = {'cat': 1, 'bird': 2, 'pig': 3}
print(json.dumps(d)) # {"cat": 1, "bird": 2, "pig": 3}
print(type(json.dumps(d))) # <class 'str'>
json.dumps()
にPythonの辞書を渡すと、JSONの文字列に変換できます。あとはこの文字列をファイルに書き込めば、JSONファイルとして保存可能です。
import json
d = {'cat': 1, 'bird': 2, 'pig': 3}
# animals.json ファイルに書き込み
with open('animals.json', 'w', encoding='utf-8') as fout:
fout.write(json.dumps(d))
Pythonのdictを初期化するには?
Pythonのdictを初期化するには{}
かdict()
を使います。
出典:5. 辞書型 (dictionary) — データ構造 — Python 3.13.5 ドキュメント
d1 = {'cat': 1, 'bird': 2}
print(d1) # {'cat': 1, 'bird': 2}
d2 = dict(cat=1, bird=2)
print(d2) # {'cat': 1, 'bird': 2}
{}
はキーを文字列としてセットします。dict()
はキーに値をkey=value
という形で指定します。