用語比較
辞書の pop() と popitem() の違い|キー指定か末尾か(Python3基礎)
辞書から要素を取り出して削除するメソッドには、pop() と popitem() があります。どちらも取り出した要素は辞書から消えます。
違いは取り出す対象の決め方で、pop() はキーを自分で指定し、popitem() は指定せず、最後に追加された組を取り出します。
このページは、pop() にキーを渡し忘れてエラーになった人や、popitem() が返すものが値だけなのか組なのか迷った人向けです。決まりは、Python 公式ドキュメントの組み込み型(辞書)の項に書かれています。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。
結論
d.pop(key)
key があればその値を返して辞書から削除する。無ければ KeyError。default を渡すと、無いときはそれを返す。
d.popitem()
(キー, 値)の組を後ろから順(LIFO)に1組取り出して削除する。辞書が空なら KeyError。
共通
取り出した要素は辞書から消える。
違いを表で確認
| 比較軸 | d.pop(key) | d.popitem() |
|---|---|---|
| 引数 | pop(key) または pop(key, default) | popitem()(引数なし) |
| 戻り値(d は {"a": 1, "b": 2, "c": 3}) | d.pop("b"):2(値だけ) | d.popitem():('c', 3)(キーと値の組) |
| 存在しないとき | d.pop("z"):KeyError。d.pop("z", 0) は 0 | 空の辞書の popitem():KeyError |
| 取り出す要素 | 指定したキーの要素 | 挿入順で最後の要素 |
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
どこで迷っているかを切り分ける
pop() にキーを渡さずエラーになった人
公式ドキュメントでは、辞書の pop() は pop(key) か pop(key, default) の形で、キーが必要です。キーを渡さないなら popitem() です。リストの pop() は引数なしで末尾を取り出すので、混同しやすい点です。
存在しないキーで KeyError になった人
公式ドキュメントには、default を渡さずキーが無いと KeyError になると書かれています。Python 3.9.6 では d.pop("z") が KeyError で、d.pop("z", 0) は 0 を返し、辞書は変わりませんでした。
popitem() がどの要素を返すか迷った人
公式ドキュメントでは、popitem() は LIFO(後に入れたものが先)の順で返し、3.7 からこの順序が保証されたと説明されています。Python 3.9.6 では {"a": 1, "b": 2, "c": 3} の popitem() が ('c', 3)、次が ('b', 2) でした。
具体例で使い分ける
例 1
キーを指定して値を取り出す
d = {"a": 1, "b": 2, "c": 3} に対して、d.pop("b") を実行します。
- 公式ドキュメントは、pop() を、キーがあればその値を返して削除するメソッドと説明しています。
- 戻り値は値だけで、キーは含まれません。
結論: 戻り値は 2 で、d は {'a': 1, 'c': 3} になります。Python 3.9.6 で同じ結果を確認しました。
例 2
最後の組を取り出す
d = {"a": 1, "b": 2, "c": 3} に対して、d.popitem() を実行します。
- 公式ドキュメントは、popitem() を(キー, 値)の組を取り出して削除するメソッドと説明しています。
- 組は LIFO の順で返されるので、最後に追加された "c" の組が先です。
結論: 戻り値は ('c', 3) で、d は {'a': 1, 'b': 2} になります。Python 3.9.6 で同じ結果を確認しました。
問題文から答えを選ぶ手順
- 1
取り出す要素を自分で決めるか
キーを指定するなら pop() です。どれでもよく、最後の1組が欲しいなら popitem() です。
- 2
欲しい戻り値を決める
値だけなら pop()、キーと値の組なら popitem() です。
- 3
無いときの扱いを決める
キーが無いかもしれないなら pop(key, default) にします。popitem() は空の辞書で KeyError です。
試験での見分け方
- 1pop() はキーを指定し、その値を返す。
- 2popitem() は引数なしで、最後に追加された(キー, 値)の組を返す。
- 3pop(key) はキーが無いと KeyError。default を渡せば避けられる。
- 4popitem() は空の辞書で KeyError。
誤答しやすい選択肢
pop() の戻り値にキーも含まれると思う
修正: pop(key) の戻り値は値だけです。組が欲しいなら popitem() を使います。
popitem() が最初の要素を返すと思う
修正: LIFO の順なので、最後に追加された組が先に返ります。
popitem() にキーを渡す
修正: popitem() は引数を取りません。キーを指定するなら pop(key) です。
確認問題
Q1d = {"a": 1, "b": 2} のとき、d.pop("a") は何を返しますか?
答え: 1
指定したキーの値だけを返し、その要素を辞書から削除します。
Q2d = {"a": 1, "b": 2} のとき、d.popitem() は何を返しますか?
答え: ('b', 2)
最後に追加された(キー, 値)の組を返します。
Q3d = {"a": 1} のとき、d.pop("z", 0) は何を返しますか?
答え: 0
キーが無いときは default の 0 を返し、辞書は変わりません。
到達チェック
- pop() がキーを指定して値を返すと言える
- popitem() が最後に追加された組を返すと言える
- pop() にキーが無いときの KeyError と default の役割を言える
- popitem() が空の辞書で KeyError になると言える
関連ページで確認する
同じ資格で次に知りたいこと
- split()と join() の違い|文字列を分ける・つなぐ(Python3基礎)
文字列の split() は区切って文字列のリストにし、join() は文字列のリストを1つの文字列につなぎます。Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
- strip()と replace() の違い|空白を消す範囲(Python3基礎)
文字列の strip() は両端の文字だけを取り除き、replace() は文字列中の一致をすべて置き換えます。Python 公式ドキュメントの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
- list.append()と insert() の違い|要素を足す位置(Python3基礎)
リストの append() は末尾に1個足し、insert() は指定した位置に足します。Python 公式チュートリアルの規定、Python 3.9.6 での実行結果、確認問題つきで整理します。
よくある質問
Qリストの pop() と同じですか?
公式ドキュメントでは別のメソッドです。リストの pop() は位置を指定でき、引数なしなら末尾を取り出します。辞書の pop() はキーが必要です。
Q3.7 より前の popitem() はどうでしたか?
公式ドキュメントでは、3.7 より前は任意のキーと値の組を返したと説明されています。3.7 から LIFO の順が保証されています。
Qどちらが速いですか?
このページでは速度を比べていません。取り出す要素の決め方で選びます。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: ミナト編集部(運営者情報を見る)
