Python

【Python】辞書の要素を取得する方法

この記事では、Python で辞書の要素を取得する方法を解説します。

key から value を取得

辞書の key から value を取得する方法はいくつか存在しています。

dict[key]

[] を辞書の後ろに付けてアクセスしたい key を指定します。

dict[key]

サンプル

試しに key から value を取得してみます。

d = {'key1': 1, 'key2': 2, 'key3': 3} 

print(d['key1'])
print(d['key2'])
print(d['key3'])

実行結果

1
2
3

getメソッド

get()メソッド を使用することで key から value を取得できます。この方法では、存在していない key を指定してもエラーになりません。

dict.get(key[, default])

存在していない key が指定された場合 None が返されます。default が指定されている場合は、その値が返されます。

サンプル

get()メソッド を使って値を取得してみます。

d = {'key1': 1, 'key2': 2, 'key3': 3} 

print(d.get('key1'))

# 存在してない key を指定してみる
print(d.get('key4'))

# 存在してない key + default の指定
print(d.get('key4', 4))

実行結果

1
None
4

setdefaultメソッド

setdefaultメソッド は、key から value を取得できます。存在していない key を指定した場合、その key と None を要素として辞書に追加し、None を返します。

dict.setdefault(key[, default])

default を指定した際に存在していない key の値を取得しようとした場合、その key と default を要素として辞書に追加し、default を返します。

サンプル

d = {'key1': 1, 'key2': 2, 'key3': 3} 

print(d.setdefault('key1'))

# 存在してない key を指定してみる
print(d.setdefault('key4'))
print(d)

# 存在してない key + default の指定
print(d.setdefault('key5', 5))
print(d)

実行結果

1
None
{'key1': 1, 'key2': 2, 'key3': 3, 'key4': None}
5
{'key1': 1, 'key2': 2, 'key3': 3, 'key4': None, 'key5': 5}

要素をバラバラに取得: アンパック

以下のように記述することで key をアンパックできます。

d = {'one': 1, 'two': 2, 'three': 3}

# アンパック
k1, k2, k3 = d

print(k1, k2, k3)

実行結果

one two three

関数に渡す際は ** を変数の前に付けます。

d = {'one': 1, 'two': 2, 'three': 3}

def func(one, two, three):
    print(one)
    print(two)
    print(three)


# この呼び出しは、「func(one=1, two=2, three=3)」と等価
func(**d)

実行結果

1
2
3

配列の要素を展開して変数に代入する方法【アンパック】

辞書ビューオブジェクトを使った要素の取得

以下の3つの関数は辞書ビューオブジェクトを返します。

  • dict.keys()
  • dict.values()
  • dict.items()

辞書ビューオブジェクトとは、辞書の key や value を取得するためのオブジェクトですが、辞書が変更された時、ビューはその変更を反映します。

辞書ビューオブジェクトでできること
  • for文で使う
  • リストに変換する
  • in演算子で特定の要素を含むか判定する
  • 逆順にする

keyのみ取得: keysメソッド

keys()メソッド を使うことで key を全て取得できます。

dict.keys()

サンプル

試しに全ての key を取得してみます。

d = {'name': '田中太郎', 'age': 20, 'gender': '男'}

# key を格納したビューオブジェクト
keys = d.keys()
print(keys)

# 要素の追加
d['form'] = 'Japan'
print(keys)

実行結果

dict_keys(['name', 'age', 'gender'])
dict_keys(['name', 'age', 'gender', 'form'])

valueのみ取得: valuesメソッド

values()メソッド を使って value のみを全て取得できます。

dict.values()

サンプル

試しに全ての value を取得してみます。

d = {'name': '田中太郎', 'age': 20, 'gender': '男'}

# key を格納したビューオブジェクト
values = d.values()
print(values)

# 要素の追加
d['form'] = 'Japan'
print(values)

実行結果

dict_values(['田中太郎', 20, '男'])
dict_values(['田中太郎', 20, '男', 'Japan'])

keyとvalueを取得: itemsメソッド

items()メソッド を使って key と value を全てタプルとして取得できます。

dict.items()

サンプル

試しに全ての key と value を取得してみます。

d = {'name': '田中太郎', 'age': 20, 'gender': '男'}

# key を格納したビューオブジェクト
items = d.items()
print(items)

# 要素の追加
d['form'] = 'Japan'
print(items)

実行結果

dict_items([('name', '田中太郎'), ('age', 20), ('gender', '男')])
dict_items([('name', '田中太郎'), ('age', 20), ('gender', '男'), ('form', 'Japan')])