用語比較
dictのkeys()・values()・items()の違い|キーだけ、値だけ、キーと値の組を取り出す(Python3基礎)
dictのkeys()・values()・items()の違いは取り出すもので、keys()はキー、values()は値、items()はキーと値の組(タプル)を取り出します。
辞書のループでitems()を使うと、キーとそれに対応する値を同時に取り出せます。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。
keys()とvalues()の要点
keys()
キーを取り出す。「キーがあるか」の確認や、キーだけを回すときに使う。
values()
値を取り出す。値の合計や、値の中に含まれるかの確認に使う。
items()
キーと値の組を取り出す。for k, v in d.items(): の形で、両方を同時に使うときに使う。
違いを表で確認
| 比較軸 | keys() | values() |
|---|---|---|
| 取り出すもの | キー(keys)/値(values) | キーと値の組(items) |
| 返り値の型 | dict_keys/dict_values | dict_items |
| forでの受け取り方 | for k in d.keys(): / for v in d.values():(1つの変数) | for k, v in d.items():(2つの変数) |
| inで確かめられるもの | keys()ではキー、values()では値 | items()ではキーと値の組 |
| 辞書を変更したあとの見え方 | どれもビューなので、辞書の変更が反映される | 同じ(items() も反映される) |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
PRどこで迷っているかを切り分ける
キーだけを順に処理したい人
d をそのまま for で回すと、キーが順に取り出されます。d.keys() を書いても同じ結果になります。
値だけを足し合わせたい人
values() を使い、for で値を順に取り出します。Python公式ドキュメントの標準型の項の例も、values() を回して合計を作っています。
キーと値の両方を使いたい人
items() を使います。公式チュートリアルの5.6節は、for k, v in knights.items(): でキーと値を同時に取り出す例を示しています。
具体例で使い分ける
例 1
3つの結果を並べて見る場合
d = {'a': 1, 'b': 2} に対して、それぞれをlist()で並べる場面です。
- list(d.keys()) は ['a', 'b']、list(d.values()) は [1, 2] になります。
- list(d.items()) は [('a', 1), ('b', 2)] で、キーと値のタプルが並びます。
結論: 取り出すものが違うだけで、並びの順は同じです。
例 2
辞書に追加したあとの、ビューの見え方
ks = d.keys() を保存したあとで、d['c'] = 3 を実行する場面です。
- keys() が返すのはビューオブジェクトで、辞書の変更が反映されます。
- 追加後に list(ks) を見ると、['a', 'b', 'c'] になり、あとから足したキーが含まれます。
結論: keys() の結果は、リストのコピーではありません。時点を固定したいときは list() で変換します。
例 3
inの判定が、keys()とvalues()で違う場合
d = {'a': 1, 'b': 2} に対して、'a' in d.keys()、2 in d.values()、2 in d.keys() を調べる場面です。
- 'a' in d.keys() は True、2 in d.values() も True です。
- 2 in d.keys() は False です。2 は値であってキーではないためです。
結論: keys() はキー、values() は値を調べます。取り違えると False になります。
問題文から答えを選ぶ手順
- 1
使いたいものを決める
キーだけか、値だけか、両方かを決めます。
- 2
キーだけなら辞書そのものか keys()
for でキーを回すだけなら、d をそのまま書けば足ります。
- 3
値だけならvalues()
値の合計や、値の探索には values() を使います。
- 4
両方ならitems()
for k, v in d.items(): と書き、2つの変数で受け取ります。
試験での見分け方
- 1keys() はキー、values() は値、items() はキーと値の組を取り出す。
- 23つとも辞書のビューで、辞書を変更するとその変更が反映される。
- 3ビューに番号でアクセスすることはできない。必要なら list() で変換する。
誤答しやすい選択肢
items() を1つの変数で受け取る
修正: for x in d.items(): と書くと、x は (キー, 値) のタプルになります。2つに分けたいなら for k, v in d.items(): と書きます。
keys() の結果に番号でアクセスする
修正: d.keys()[0] は TypeError('dict_keys' object is not subscriptable)になります。list(d.keys())[0] のように、list() で変換してから使います。
inで値を探すのに keys() を使う
修正: keys() が調べるのはキーです。値の有無は values() で調べます。
確認問題
Q1d = {'a': 1, 'b': 2} のとき、list(d.items()) の結果は何ですか?
答え: [('a', 1), ('b', 2)]
items() はキーと値の組(タプル)を取り出します。
Q2d = {'a': 1, 'b': 2} のとき、2 in d.keys() の結果は何ですか?
答え: False
2 は値で、キーではないため、keys() の中にはありません。
Q3keys() を保存したあとで辞書にキーを追加すると、保存したビューにそのキーは含まれますか?
答え: 含まれます。
標準型の項は、ビューは辞書の動的な見え方であり、辞書が変わるとその変更が反映されると説明しています。
Q4d.keys()[0] を実行すると、どうなりますか?
答え: TypeError になります。
dict_keys は番号で取り出せないためです。list(d.keys())[0] のように変換して使います。
到達チェック
- keys・values・items がそれぞれ取り出すものを言える
- for k, v in d.items(): の形で受け取れる
- ビューは辞書の変更が反映されると説明できる
- ビューに番号でアクセスできないことを説明できる
関連ページで確認する
同じ資格で次に知りたいこと
- pass文とcontinue文の違い|何もしないか、ループの次の繰り返しへ進むか(Python3基礎)
pass文とcontinue文の違いを、動き(何もしないか、残りを飛ばすか)、使える場所、同じループに入れたときの結果で解説。Python3エンジニア認定基礎試験の第4章(制御構造ツール)の確認問題つきです。
- all()とany()の違い|すべて真か、1つでも真か、空のときの結果(Python3基礎)
all()とany()の違いを、真になる条件、空のイテラブルを渡したときの結果、途中で判定が止まる動き、条件式との組み合わせ方で解説。Python3エンジニア認定基礎試験の確認問題つきです。
- list.remove()とlist.pop()の違い|値を指定して削除するか、位置を指定して取り出すか(Python3基礎)
list.remove()とlist.pop()の違いを、指定するもの(値か位置か)、返り値、見つからないときのエラー、同じ値が複数あるときの動きで解説。Python3エンジニア認定基礎試験の第5章(リスト)の確認問題つきです。
よくある質問
Qkeysとvaluesとitemsの違いは何ですか?
keys() はキー、values() は値、items() はキーと値の組を取り出します。
Q辞書をforで回すと、keys()と同じですか?
同じです。辞書をそのまま for で回すと、キーが順に取り出されます。
Qkeys()の結果はリストですか?
リストではなく、ビューオブジェクトです。辞書の変更が反映されます。リストにしたいときは list() で変換します。
Qitemsはどう受け取りますか?
for k, v in d.items(): と、2つの変数で受け取ります。公式チュートリアルの5.6節に同じ形の例があります。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: AI資格ドリル編集部(運営者情報を見る)
