AI資格ドリル
資格を選ぶ

用語比較

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_valuesdict_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

ほかの資格を含む参考書・問題集の一覧を見る

どこで迷っているかを切り分ける

01

キーだけを順に処理したい人

d をそのまま for で回すと、キーが順に取り出されます。d.keys() を書いても同じ結果になります。

02

値だけを足し合わせたい人

values() を使い、for で値を順に取り出します。Python公式ドキュメントの標準型の項の例も、values() を回して合計を作っています。

03

キーと値の両方を使いたい人

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. 1

    使いたいものを決める

    キーだけか、値だけか、両方かを決めます。

  2. 2

    キーだけなら辞書そのものか keys()

    for でキーを回すだけなら、d をそのまま書けば足ります。

  3. 3

    値だけならvalues()

    値の合計や、値の探索には values() を使います。

  4. 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(): の形で受け取れる
  • ビューは辞書の変更が反映されると説明できる
  • ビューに番号でアクセスできないことを説明できる

同じ資格で次に知りたいこと

よくある質問

Qkeysとvaluesとitemsの違いは何ですか?

A

keys() はキー、values() は値、items() はキーと値の組を取り出します。

Q辞書をforで回すと、keys()と同じですか?

A

同じです。辞書をそのまま for で回すと、キーが順に取り出されます。

Qkeys()の結果はリストですか?

A

リストではなく、ビューオブジェクトです。辞書の変更が反映されます。リストにしたいときは list() で変換します。

Qitemsはどう受け取りますか?

A

for k, v in d.items(): と、2つの変数で受け取ります。公式チュートリアルの5.6節に同じ形の例があります。

次に見る比較

執筆: AI資格ドリル編集部(運営者情報を見る)