4-2. Pythonの辞書型 (dict型)


1. Pythonの辞書型とは?

辞書型とは key (キー) と value (バリュー)が対になっている複数のデータを、ひとまとめにしたものです。
このようにkeyとvalueが対になっているデータ構造をマップ型・マッピング型とも言います。

例えば、keyに都市名、valueに人口を持つ辞書型の変数を考えます。
このような変数を作ると、「ある都市は人口はどのくらいか?」という情報をプログラム内で保持することができます。

Python_辞書型のイメージ_dict型のイメージ

2. 辞書型データの作成する

辞書型の変数は以下のようにして作成します。

  • keyに対するvalueを : (コロン) の後に書く
  • key: valueの対を , (カンマ) で複数組を繋げて書く
  • 複数組みのkey: valueを { } を使って囲む
x = {
    'key1': 'value1',
    'key2': 'value2',
    'key3': 'value3',
    'key4': 'value4'
}

最後の組のあとは , (カンマ) はつけなくて良いです。
また、: (コロン)はkey側は詰めて書き、value側は半角スペースを開けたほうが良いです。

上記の図の、都市と人口を持つ辞書をPythonのコードで書くと、以下の通りです。

population = {
    '新宿区': 337000,
    '渋谷区': 221000,
    '港区': 243000,
    '品川区': 380000
}


同じkeyのデータを作ろうとすると、後に書いたvalueで上書きされます。

population = {
    '新宿区': 337000,
    '渋谷区': 221000,
    '港区': 243000,
    '品川区': 380000,
    '新宿区': 0,
}

print(population)
>> {'新宿区': 0, '渋谷区': 221000, '港区': 243000, '品川区': 380000}


空の辞書を作ることもできます。

x = {}


3. 辞書のkeyを指定してvalueを取得する

keyを指定して辞書のvalueを取得するには[] (括弧) を使います。

  • keyを指定してvalueを取得 : <辞書>[<key>]

実際に、先ほどの例で港区の人口を取得してみます。

population = {
    '新宿区': 337000,
    '渋谷区': 221000,
    '港区': 243000,
    '品川区': 380000
}

print(population['港区'])
>> 243000


存在していないkeyを指定するとエラーになります


4. 辞書のkeyを指定してvalueを取得する (get)

keyを指定してvalueを取得する方法に get() を使う方法もあります。
get() を使うと、keyが存在しなかった時に返す値(デフォルト値)を設定できます。
デフォルト値は省略できます。

  • keyを指定してgetでvalueを取得: <辞書>.get(<key>, <デフォルト値>)

population = {
    '新宿区': 337000,
    '渋谷区': 221000,
    '港区': 243000,
    '品川区': 380000
}

print(population.get('品川区'))
>> 380000

# デフォルト値が返ってくる
print(population.get('千代田区', 65000))
>> 65000

# 辞書は変わっていない
print(population)
>> {'新宿区': 337000, '渋谷区': 221000, '港区': 243000, '品川区': 380000}

5. 辞書に要素を追加する

辞書に要素 (key, value) を追加するには、keyを指定してvalueを代入します。

  • 辞書に要素 (key, value) を追加する : <辞書>[<key>] = <value>

population = {
    '新宿区': 337000,
    '渋谷区': 221000,
    '港区': 243000,
    '品川区': 380000
}

population['千代田区'] = 65000

print(population)
>> {'新宿区': 337000, '渋谷区': 221000, '港区': 243000, '品川区': 380000, '千代田区': 65000}

6. 辞書のkeyを指定してvalueを更新する

keyを指定して、valueを変更することができます。
`<辞書>[<key>]` に値を代入すると変更されます。

  • keyを指定してvalueを変更: <辞書>[<key>] = <value>
population = {
    '新宿区': 337000,
    '渋谷区': 221000,
    '港区': 243000,
    '品川区': 380000
}
population['渋谷区'] = 0

print(population)
>> {'新宿区': 337000, '渋谷区': 0, '港区': 243000, '品川区': 380000}

7. 辞書のkeyを指定して要素を削除する (del)

辞書の要素(key, value)を削除するのは del() を使います。

  • 辞書のkeyを指定して要素(key, value) を削除 : del <辞書>[<key>]
population = {
    '新宿区': 337000,
    '渋谷区': 221000,
    '港区': 243000,
    '品川区': 380000
}

del population['港区']
print(population)
>> {'新宿区': 337000, '渋谷区': 221000, '品川区': 380000}


8. 辞書と辞書を結合する (update)

辞書と辞書を結合するには、update()| を使います。
ただし、| は、Python3.9以降で利用可能です。

  • 辞書Aの末尾に辞書Bを結合 : <辞書A>.update(<辞書B>)
  • 辞書Aと辞書Bを結合 (Python3.9以降) : <辞書A> | <辞書B>

update() は 辞書A自体を更新するのに対し、 | は辞書Aと辞書Bを繋げて新しい辞書を作成します。

# updateでxを更新
x = {'ABC': 0.111, 'DEF': 0.2}
y = {'abc': 1, 'def': 100}

x.update(y)
print(x)
>> {'ABC': 0.111, 'DEF': 0.2, 'abc': 1, 'def': 100} 

# | で結合した辞書を作成
x = {'ABC': 0.111, 'DEF': 0.2}
y = {'abc': 1, 'def': 100}

z = x | y
print(z)
>> {'ABC': 0.111, 'DEF': 0.2, 'abc': 1, 'def': 100} 


9. 辞書内に特定のkeyが存在するか調べる (in)

辞書内に特定のkeyが存在するかを調べるには in を使います。
Pythoには bool型 (論理型) があり、真なら True・偽なら False となります。

  • 辞書内の特定のkeyが存在するか判定: <value> in <辞書>
population = {
    '新宿区': 337000,
    '渋谷区': 221000,
    '港区': 243000,
    '品川区': 380000
}

print('港区' in population)
>> True
print('中央区' in population)
>> False

10. 辞書の長さを確認する (len)

辞書の中に、[key: value] が何組あるか、辞書の長さを調べるのは len() を使います。

  • 辞書の長さを確認 : len(<辞書>)
population = {
    '新宿区': 337000,
    '渋谷区': 221000,
    '港区': 243000,
    '品川区': 380000
}

print(len(population))
>> 4

11. 辞書の練習問題

練習問題 4 – b. Python 辞書の操作


12. 参考 Python 公式ドキュメント


このエントリーをはてなブックマークに追加