Pythonの辞書(dict)に格納されたデータ全体にアクセスしたい場合、キーだけの一覧が欲しい、値だけを集計したい、あるいはキーと値をセットで処理したいといった場面があります。
Pythonには、これらの目的に応じた3つの標準メソッド keys(), values(), items() が用意されています。
この記事では、それぞれのメソッドの使い方と、取得したデータをリストに変換する方法について解説します。
1. 全てのキーを取得する: .keys()
辞書に含まれる「キー」の一覧を取得するには、.keys() メソッドを使用します。
# 科目と点数の辞書
exam_scores = {
"Math": 85,
"Science": 92,
"English": 78
}
# すべてのキーを取得
subjects = exam_scores.keys()
print(f"キー一覧: {subjects}")
print(f"型: {type(subjects)}")
# forループでキーを順に取り出す
print("--- 科目一覧 ---")
for subject in subjects:
print(subject)
実行結果:
キー一覧: dict_keys(['Math', 'Science', 'English'])
型: <class 'dict_keys'>
--- 科目一覧 ---
Math
Science
English
返り値は dict_keys という特殊なオブジェクトですが、for ループでそのまま利用できます。
2. 全ての値を取得する: .values()
辞書に含まれる「値」の一覧を取得するには、.values() メソッドを使用します。合計値や平均値を計算したい場合などに便利です。
# すべての値を取得
scores = exam_scores.values()
print(f"値一覧: {scores}")
print(f"型: {type(scores)}")
# 値の合計を計算(sum関数などが利用可能)
total_score = sum(scores)
print(f"合計点: {total_score}")
実行結果:
値一覧: dict_values([85, 92, 78])
型: <class 'dict_values'>
合計点: 255
3. キーと値のペアを取得する: .items()
キーと値をセットで取得するには、.items() メソッドを使用します。 取得される各要素は (キー, 値) という形式のタプルになります。
これは for ループと組み合わせて、キーと値を同時に変数に展開(アンパック)して処理する際によく使われます。
# すべてのペアを取得
pairs = exam_scores.items()
print(f"ペア一覧: {pairs}")
print(f"型: {type(pairs)}")
# forループでキーと値を同時に取り出す
print("--- 点数詳細 ---")
for subject, score in pairs:
print(f"{subject}: {score}点")
実行結果:
ペア一覧: dict_items([('Math', 85), ('Science', 92), ('English', 78)])
型: <class 'dict_items'>
--- 点数詳細 ---
Math: 85点
Science: 92点
English: 78点
4. リスト形式への変換 (list())
前述の通り、これらのメソッドが返すのは dict_keys, dict_values, dict_items という「ビューオブジェクト」です。これらはリストのように見えますが、インデックス([0]など)を指定してアクセスすることはできません。
インデックスを使ってアクセスしたい場合は、list() 関数を使って明示的にリスト型へ変換する必要があります。
# ビューオブジェクトをリストに変換
subject_list = list(exam_scores.keys())
score_list = list(exam_scores.values())
pair_list = list(exam_scores.items())
print(f"キーのリスト: {subject_list}")
print(f"1番目の科目: {subject_list[0]}") # リストなのでインデックス参照可能
print(f"値のリスト: {score_list}")
print(f"ペアのリスト: {pair_list}")
実行結果:
キーのリスト: ['Math', 'Science', 'English']
1番目の科目: Math
値のリスト: [85, 92, 78]
ペアのリスト: [('Math', 85), ('Science', 92), ('English', 78)]
まとめ
辞書の要素をまとめて取得する方法を整理します。
.keys(): キーの一覧を取得。.values(): 値の一覧を取得。.items(): (キー, 値) のペアの一覧を取得。- 取得されるデータはビューオブジェクトであるため、インデックス操作が必要な場合は
list()でリストに変換します。
