辞書のkeys/values/itemsメソッドを使ってビューオブジェクトを取得して、キーや値、それらの組を反復したり、特定のキーや値が辞書に含まれているかを確認したりする方法を紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
d = {'key0': 0, 'key1': 1, 'key2': 2}
# キーを反復
keys = d.keys()
print(keys) # dict_keys(['key0', 'key1', 'key2'])
for key in keys:
print(key) # 'key0'、'key1'、'key2'が反復される
# 値を反復
values = d.values()
print(values) # dict_values([0, 1, 2])
for value in values:
print(value) # 0、1、2が反復される
# キーと値を反復
items = d.items()
print(items) # dict_items([('key0', 0), ('key1', 1), ('key2', 2)])
for key, value in items:
print(key, ':', value) # 「key0 : 0」「key1 : 1」「key2 : 2」
# キーの存在確認
existence = 'key4' in d.keys()
print(existence) # False
existence = 'key1' in d
print(existence) # True
# 値の存在確認
existence = 0 in d.values()
print(existence) # True
existence = 0 in d
print(existence) # False
# キー/値の組の存在確認
existence = ('key0', 0) in d.items()
print(existence) # True
existence = ('key0', 1) in d.items()
print(existence) # False
# ビューオブジェクトは動的
keys = d.keys()
print(keys) # dict_keys(['key0', 'key1', 'key2'])
d['key3'] = 3
print(keys) # dict_keys(['key0', 'key1', 'key2', 'key3'])
# キーは集合的な演算も可能
d2 = {'key0': 0, 'key1': 1, 'key2': 2}
print(d2) # {'key0': 0, 'key1': 1, 'key2': 2}
keys2 = d2.keys()
print(keys2) # dict_keys(['key0', 'key1', 'key2'])
print(keys) # dict_keys(['key0', 'key1', 'key2', 'key3'])
result = keys > keys2 # keysはkey2を包含している
print(result) # True
result = keys ^ keys2 # keysとkeys2の対象差を計算
print(result) # {'keys3'}
result = d > d2 # TypeError
result = d ^ d2 # TypeError
辞書からは「辞書ビューオブジェクト」と呼ばれるオブジェクトを取得できる。これらを使って、キー/値/キーと値を要素とするタプルを反復できる。辞書ビューオブジェクトを得るには以下のメソッドを呼び出す。
取得したビューを使うと、上記メソッドで得られる要素(キー、値、それらを要素とするタプル)を反復したり、存在確認をしたりできる。
キーや値、それらを要素とするタプルを反復するには、上で述べた通り、keys/values/itemsメソッドを使用する。以下に例を示す。
d = {'key0': 0, 'key1': 1, 'key2': 2}
# キーを反復
keys = d.keys()
print(keys) # dict_keys(['key0', 'key1', 'key2'])
for key in keys:
print(key) # 'key0'、'key1'、'key2'が反復される
この例ではkeysメソッドを用いて、キーのビューオブジェクトを取得している(dict_keysオブジェクト)。反復処理をサポートしているので、後はfor文でその値(キー)を取り出すだけだ。なお、インデックスやスライスによる特定要素の取り出しはサポートされない。
値やキー/値のタプルの反復についても同様だ。以下に例を示す。
# 値を反復
values = d.values()
print(values) # dict_values([0, 1, 2])
for value in values:
print(value) # 0、1、2が反復される
# キーと値を反復
items = d.items()
print(items) # dict_items([('key0', 0), ('key1', 1), ('key2', 2)])
for key, value in items:
print(key, ':', value) # 「key0 : 0」「key1 : 1」「key2 : 2」
itemsメソッドでは「(キー, 値)」というタプルの形で辞書の要素が格納されることは覚えておこう。
Copyright© Digital Advantage Corp. All Rights Reserved.