[解決!Python]辞書の要素を取得するには解決!Python

辞書からキーに対応した値を取得するには幾つかの方法がある。それらの方法と注意点を紹介する。

» 2023年03月28日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

d = {'key0': 0, 'key1': 1}

# 辞書から値を取得
# キーを指定
val = d['key0']
print(val)  # 0

# 存在しないキーを指定すると例外
val = d['key100'# KeyError

# 例外を発生させずに値を取得するにはgetメソッドを使う
val = d.get('key0', 'not found')
print(val)  # 0

val = d.get('key100', 'not found'# OK
print(val)  # not found

# popメソッドは引数に指定したキーの値を取得して、そのキー/値を辞書から削除
val = d.pop('key1')
print(val)  # 1
print(d)  # {'key0': 0}

# popメソッドで存在しないキーを指定した場合
val = d.pop('key100'# KeyError

val = d.pop('key100', 'not found')
print(val)  # not found

# popitemメソッドは辞書の末尾からキー/値の組を戻し、それを辞書から削除
d = {'foo': 0, 'bar': 1, 'baz': 2}
print(d)  # {'foo': 0, 'bar': 1, 'baz': 2}

k, v = d.popitem()
print(f'key: {k}, val: {v}'# key: baz, val: 2
print(d)  # {'foo': 0, 'bar': 1}


辞書から値を取得する方法

 辞書から値を取得するには以下のような方法がある(ここでいう「値」とは、辞書に含まれるキーに対応する値のこと)。

  • 辞書に対して角かっこ「[]」でキーを囲む
  • getメソッドの引数にキーを指定する
  • popメソッドの引数にキーを指定する(対応するキー/値は辞書から削除される)
  • popitemメソッドで辞書の末尾要素のキーと値を取得する(末尾要素は辞書から削除される)

 以下では、これらについて簡単に見ていく。

角かっこにキーを指定

 辞書に対して角かっこにキーを指定することで、その値を取得できる。これはリストやタプルで角かっこの中にインデックスを指定して、そのインデックス位置にある値を取得するのに似ている。

 以下に例を示す。

d = {'key0': 0, 'key1': 1}

val = d['key0']
print(val)  # 0


 この例では辞書dには'key0'と整数0、'key1'と整数1という2つのキー/値の組が含まれている。そして、辞書dに対して「d['key0']」のように角かっこで囲んでキー'key0'を指定すると、その値である整数0が得られている。

 これは辞書からキーに関連付けられた値を取得する最も一般的な方法といえる。ただし、注意点がある。それは存在しないキーを指定すると例外が発生することだ。以下に例を示す。

val = d['key100'# KeyError


 これに対して、次に紹介するgetメソッドでは存在しないキーを指定した場合にも例外を発生させない。

getメソッドの引数にキーを指定

 getメソッドの構文は次のようになっている。

get(key[, default])


 keyには取得したい要素のキーを指定する。defaultは指定したキーが存在しなかった場合にはgetメソッドが返す値を指定する。省略時にはNoneが指定されたものとされる。これにより、getメソッドでは指定したキーが辞書になくても、KeyError例外を発生させることなくdefaultの値が返送される。

 以下に例を示す(辞書dは先ほどと同様)。

val = d.get('key0', 'not found')
print(val)  # 0

val = d.get('key100', 'not found'# OK
print(val)  # not found


 最初の例では存在するキーである'key0'を指定しているい。そのため、その値である整数0が返されている。

 次の例では、存在しないキー'key100'を指定している。また、引数defaultには'not found'を指定している。よって、ここではgetメソッドの戻り値は'not found'になる。

 多くの場合は、ここまでに説明した2つの方法で辞書の値を取り出すが、popメソッドとpopitemメソッドでも辞書から値を取り出せる。

popメソッドとpopitemメソッド

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。