環境設定 数値 文字列 正規表現 リスト タプル 集合 辞書 ループ 関数 クラス データクラス 時間 パス ファイル スクレイピング その他

Pythonの辞書(dictionary)の使い方:値の取得、追加、削除、検索、ソートをざっくり解説

最終更新日 2023.02.18

Python の辞書は中カッコに「ペア」をカンマ区切りで並べたものです。

d = {'太郎': 43, '次郎': 51, '三郎': 82, '花子': 76}

'太郎': 43 が一つのペアです。ペアは「キー:値」という形で、必ずコロンでつなぎます。

d = {'apple': 7, 'lemon': 11}
e = {'x': 1, 'y': 2, 'z': 3}
f = {'山田': '太郎', '佐藤': '花子'}

print(type(d))  # <class 'dict'>
print(type(e))  # <class 'dict'>
print(type(f))  # <class 'dict'>

type は変数などの型を表示する関数です。辞書は dict と表示されます。

Python で辞書の値を取得する

辞書にキーを入れると、そのキーに対応した値が出ます。

d = {'apple': 7, 'lemon': 11}

x = d['apple']

print(x)  # 7

他の例:

e = {'x': 1, 'y': 2, 'z': 3}

print(e['x'])  # 1
print(e['y'])  # 2
print(e['z'])  # 3

もしキーがなかったらどうなるでしょうか?

f = {'山田': '太郎', '佐藤': '花子'}

x = f['五郎丸']

# KeyError: '五郎丸'

f は山田と佐藤のキーを持っていますが、五郎丸というキーはありません。そこで Python は「キーがないよ!」というエラーを出します。

Python の辞書にペアを追加する

辞書にペアを追加するときは下のようにします。

d = {'Apple': 263, 'Facebook': 197}

d['Google'] = 1315

print(d)
# {'Apple': 263, 'Facebook': 197, 'Google': 1315}

Google の 1315 が追加されました。もし「すでに存在するキー」を入れたらどうなるでしょうか?

d = {'Apple': 263, 'Facebook': 197}

d['Apple'] = 'iPhone'

print(d)
# {'Apple': 'iPhone', 'Facebook': 197}

Apple の値が変更されました。つまりこの方法は「追加」と「上書き」を兼ねているのです。ちなみに上の数字は直近の株価(ドル)です。

Python の辞書からペアを削除する

辞書からペアを削除するときは pop という関数を使います。

d = {'Apple': 263, 'Facebook': 197}

d.pop('Apple')

print(d)
# {'Facebook': 197}

キーを指定してペアを削除します。もしキーがなかったらエラーになります。

d = {'Apple': 263, 'Facebook': 197}

d.pop('Microsoft')

# KeyError: 'Microsoft'

「d は Microsoft というキーがない」というエラーが表示されます。

Python の辞書にキーがあるか検索する

辞書に「キーがあるかないか」という検索(確認)は in で行います。

d = {'Apple': 263, 'Facebook': 197}

x = 'Apple' in d
y = 'Amazon' in d

print(x)  # True
print(y)  # False

Apple は d にあるため x は True になります。しかし Amazon は d にないので y は False になります。

Python の辞書をソートする(並び替える)

辞書をキーで並び替えるときは sorted を使います。

d = {'b': -1, 'a': 4, 'c': 2}

x = sorted(d.items())
y = sorted(d.items(), reverse=True)

print(x)  # [('a', 4), ('b', -1), ('c', 2)]
print(y)  # [('c', 2), ('b', -1), ('a', 4)]

b, a, c が a, b, c の順になりました。オプションをつけないと昇順、reverse=True をつけると降順になります。結果はリストで、辞書ではありません。またリストの各要素はタプルになっています。

print(type(x))  # <class 'list'>
print(type(x[0]))  # <class 'tuple'>

辞書を値で並び替えるときも sorted を使いますが、中でラムダ式を使うため少し複雑です。

d = {'b': -1, 'a': 4, 'c': 2}

x = sorted(d.items(), key=lambda i: i[1])
y = sorted(d.items(), key=lambda i: i[1], reverse=True)

print(x)  # [('b', -1), ('c', 2), ('a', 4)]
print(y)  # [('a', 4), ('c', 2), ('b', -1)]

print(type(x))  # <class 'list'>
print(type(x[0]))  # <class 'tuple'>

sorted の key にラムダ式を入れます。初めて Python を勉強する方は、一種のおまじないだと考えてください。-1, 4, 2 がソートされて -1, 2, 4 になりました。reverse=True で降順になるのは同じです。