Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
辞書.keys() / 辞書.values() / 辞書.items()
辞書のキー・値・キーと値のペアをビューオブジェクトとして取得するメソッドです。for文での反復処理や集合演算に使われます。
構文
# 辞書のすべてのキーのビューを返します。 辞書.keys() # 辞書のすべての値のビューを返します。 辞書.values() # 辞書のすべてのキーと値のペア(タプル)のビューを返します。 辞書.items()
関数一覧
| メソッド | 概要 |
|---|---|
| dict.keys() | 辞書のすべてのキーを表示するビューオブジェクト(dict_keys)を返します。辞書が更新されると自動的に反映されます。 |
| dict.values() | 辞書のすべての値を表示するビューオブジェクト(dict_values)を返します。重複する値も含めてすべて返します。 |
| dict.items() | 辞書のすべての(キー, 値)タプルのビューオブジェクト(dict_items)を返します。 |
サンプルコード
person = {
"name": "太郎",
"age": 20,
"city": "東京",
"job": "エンジニア"
}
# keys() でキーを反復します。
print(list(person.keys())) # ['name', 'age', 'city', 'job']
for key in person.keys():
print(key, end=" ") # name age city job
# ※ for key in person: と書いても同じ結果になります。
# values() で値を反復します。
print(list(person.values())) # ['太郎', 20, '東京', 'エンジニア']
for value in person.values():
print(value, end=" ") # 太郎 20 東京 エンジニア
# items() でキーと値のペアを反復します(最もよく使うパターン)。
for key, value in person.items():
print(f"{key}: {value}")
# name: 太郎
# age: 20
# city: 東京
# job: エンジニア
# values() でスコアの合計と平均を計算します。
scores = {"数学": 85, "英語": 92, "国語": 78, "理科": 88}
total = sum(scores.values())
average = total / len(scores)
print(f"合計: {total}, 平均: {average:.1f}") # 合計: 343, 平均: 85.8
# keys() を使った集合演算(セット演算)です。
dict1 = {"a": 1, "b": 2, "c": 3}
dict2 = {"b": 20, "c": 30, "d": 40}
# 両方の辞書に共通するキーを取得します。
common_keys = dict1.keys() & dict2.keys()
print(common_keys) # {'b', 'c'}
# dict1 にあって dict2 にないキーを取得します。
only_in_dict1 = dict1.keys() - dict2.keys()
print(only_in_dict1) # {'a'}
# items() で辞書を変換する実用例です。
# キーと値を入れ替えます。
original = {"a": 1, "b": 2, "c": 3}
inverted = {v: k for k, v in original.items()}
print(inverted) # {1: 'a', 2: 'b', 3: 'c'}
# 特定の条件を満たすキーだけを持つ辞書を作ります。
filtered = {k: v for k, v in scores.items() if v >= 85}
print(filtered) # {'数学': 85, '英語': 92, '理科': 88}
# ビューオブジェクトは辞書の変更を動的に反映します。
d = {"x": 1}
keys_view = d.keys()
print(list(keys_view)) # ['x']
d["y"] = 2
print(list(keys_view)) # ['x', 'y'](辞書の変更が反映されます)
概要
『keys()』『values()』『items()』が返すのはビューオブジェクトです。ビューオブジェクトは辞書の内容を反映する「ウィンドウ」のようなもので、辞書が変更されると自動的に更新されます。リストとして使いたい場合は『list()』で変換してください。
辞書をfor文で直接反復(『for key in 辞書:』)すると、『keys()』を使ったときと同じ結果になります。辞書を反復しながら辞書に要素を追加・削除するとRuntimeError が発生します。反復中に変更が必要な場合は、先にキーのリスト(『list(辞書.keys())』)を作成してから反復してください。
Python 3.7以降、辞書はキーの挿入順序を保持します。そのため『keys()』の順序は要素を挿入した順になります。辞書の安全なキー取得については『辞書.get() / 辞書.setdefault()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。