【Python】辞書とキー(keys,values,items)
Pythonにおいて辞書に対する3つのメソッドkeys()、values()、items()とビューについて解説します。
辞書のキーと値、すべての要素を取り出す
コード例
# 辞書のすべてのキー、すべての値、すべての要素をリストに取り出す
season = {'spring': '春',
'summer': '夏',
'autumn': '秋',
'winter': '冬',
}
print(f'キー : {list(season.keys())}') # キーのビューをリストに変換
print(f'値 : {list(season.values())}') # 値のビューをリストに変換
print(f'要素 : {list(season.items())}') # 要素のビューをリストに変換
実行結果
キー : ['spring', 'summer', 'autumn', 'winter']
値 : ['春', '夏', '秋', '冬']
要素 : [('spring', '春'), ('summer', '夏'), ('autumn', '秋'), ('winter', '冬')]
辞書のkeys()、values()、items()とビュー
辞書に対してenumerate関数を適応してもキーは取り出せますが値は取り出せません。
詳しくは下の記事で解説しています。
そこで使用するのがkeys()、values()、items()の3つのメソッドです。
メソッド | 内容 |
---|---|
keys() | すべてのキーの dict_keys型ビューを返却 |
values() | すべての値の dict_values型ビューを返却 |
items() | すべての要素 (キーと値のタプル)の dict_items型ビューを返却 |
ビューというのは辞書の中身を順番通りに眺めるための仮想の表のことで
順序を持った要素の集まりのイテラブルオブジェクトです。
辞書の内容が変わるとこのビューも自動的に更新されます。
このプログラムでは3つのメソッドで取得したビューをリストに変換して表示しています。
keysとvaluesではすべてのキーと値の集まりが、itemsではキーと値のタプルの集まりがビューとして取得されています。
リストに変換しているので当然インデックス式でアクセスできます。
コード例
# 辞書から取り出したビューをもとにインデックス式でアクセス
season = {'spring': '春',
'summer': '夏',
'autumn': '秋',
'winter': '冬',
}
key = list(season.keys())
value = list(season.values())
item = list(season.items())
print(f'key[0] = {key[0]}')
print(f'key[1] = {key[1]}')
print(f'key[2] = {key[2]}')
print(f'key[3] = {key[3]}')
print()
print(f'value[0] = {value[0]}')
print(f'value[1] = {value[1]}')
print(f'value[2] = {value[2]}')
print(f'value[3] = {value[3]}')
print()
print(f'item[0] = {item[0]}')
print(f'item[1] = {item[1]}')
print(f'item[2] = {item[2]}')
print(f'item[3] = {item[3]}')
print(f'item[0][0] = {item[0][0]}')
print(f'item[0][1] = {item[0][1]}')
print(f'item[1][0] = {item[1][0]}')
print(f'item[1][1] = {item[1][1]}')
print(f'item[2][0] = {item[2][0]}')
print(f'item[2][1] = {item[2][1]}')
print(f'item[3][0] = {item[3][0]}')
print(f'item[3][1] = {item[3][1]}')
実行結果
key[0] = spring
key[1] = summer
key[2] = autumn
key[3] = winter
value[0] = 春
value[1] = 夏
value[2] = 秋
value[3] = 冬
item[0] = ('spring', '春')
item[1] = ('summer', '夏')
item[2] = ('autumn', '秋')
item[3] = ('winter', '冬')
item[0][0] = spring
item[0][1] = 春
item[1][0] = summer
item[1][1] = 夏
item[2][0] = autumn
item[2][1] = 秋
item[3][0] = winter
item[3][1] = 冬
keyとvalueは文字列を要素とするリストです。
itemはタプルを要素とするリストでそのタプルの要素は文字列であることがわかります。
ビューはイテラブルオブジェクトなのでリストやタプルに変換しなくてもfor文でも取り出せます。
辞書の要素をfor文で取り出す
コード例
# 辞書のすべての要素をfor文で取り出す
season = {'spring': '春',
'summer': '夏',
'autumn': '秋',
'winter': '冬',
}
# keys()で取り出したビューをもとに走査
for key in season.keys():
print(key)
# values()で取り出したビューをもとに走査
for value in season.values():
print(value)
# items()で取り出したビューをもとに走査
for item in season.items():
print(item)
実行結果
spring
summer
autumn
winter
春
夏
秋
冬
('spring', '春')
('summer', '夏')
('autumn', '秋')
('winter', '冬')
for文によってキー、値、要素が取り出せれます。
要素はキーと値のタプルとなっているのでこれを下のように変更すればキーと値がアンパックされて別々に取り出せます。
コード例
# 辞書のすべての要素をfor文で取り出す(その2)
season = {'spring': '春',
'summer': '夏',
'autumn': '秋',
'winter': '冬',
}
# items()で取り出したビューをもとに走査(アンパックして別々にする)
for key, value in season.items():
print(key, value)
実行結果
spring 春
summer 夏
autumn 秋
winter 冬