解説
同じ名前がそろえば同じ一覧?AIの照合で重複する個数も確かめよう
A・A・BとA・B・Bは同じ?集合で消える重複を、PythonのCounterで件数のまま比較。順序・不足・余分を分ける初心者向け練習。

AIへ「この二つの一覧が同じか見て」と頼むとき、名前の種類だけが合えばよいのかな。Aが2個必要なのに1個しかなければ、名前が一通りそろっていても不足しているね。
このページでは、重複を含む一覧の個数を保ち、何が足りず何が余るかを確かめる。準備はPython 3を動かせる環境だけ。題材は架空の部品記号で、実在の注文や個人情報は使わないよ。
種類・順序・個数は、別の条件
必要な一覧がA・A・B、届いた一覧がA・B・Bだったとする。どちらも3個で、AとBという種類も同じ。でも内訳は違うんだ。
| 記号 | 必要な個数 | 届いた個数 |
|---|---|---|
| A | 2 | 1 |
| B | 1 | 2 |
足りないのはAが1個、余るのはBが1個。合計件数だけを比べても、この入れ替わりには気付けない。
順序も区別したい場合、A・A・BとB・A・Aは違う。一方、袋に入る部品の個数だけを比較するなら、この二つは同じ扱いでよいね。どの問いを調べるかを最初に決めよう。
集合にすると、重複は一つにまとまる
Pythonのsetは、同じ値を重複して持たない集合。名前の種類だけを確かめるときは便利だけれど、今回の個数比較にはそのまま使えないよ。
新しい練習用ファイルに次を書いて実行してみよう。
from collections import Counter
needed = ["A", "A", "B"]
received = ["A", "B", "B"]
print("種類だけ:", set(needed) == set(received))
print("個数も含む:", Counter(needed) == Counter(received))
表示は種類だけ: True、個数も含む: False。Counterは同じ値が何回出たかを数える仕組みだよ。Trueは一致、Falseは不一致を表す真偽値になる。
集合へ変換して元の一覧を書き換える必要はない。neededとreceivedを残したまま、それぞれを別の方法で数えているんだ。
不足と余分を、両向きに出す
上のファイルに続けて書いてみよう。a-bは、aの個数からbを引き、結果が正の項目だけを残すCounterの計算だよ。
a = Counter(needed)
b = Counter(received)
print("不足:", dict(a - b))
print("余分:", dict(b - a))
期待する表示は次の二行。
不足: {'A': 1}
余分: {'B': 1}
向きを逆にすると不足と余分も逆になる。必要な方から届いた方を引くと不足、届いた方から必要な方を引くと余分。単に「差分」とだけ呼ばず、どちら側に不足しているかを表示しよう。
Counterの引き算では0以下の結果が出力から除かれるため、一方向の結果だけで全体の差を表そうとしないでね。正負を含めた増減を残すsubtractという操作もあるけれど、今回は見やすいよう二つの一覧へ分けているよ。
順番だけが違う例も試そう
reordered = ["B", "A", "A"]
print("順序も含む:", needed == reordered)
print("個数を比較:", Counter(needed) == Counter(reordered))
表示は順序も含む: False、個数を比較: True。Pythonのリストをそのまま等しいか比べると、順番も含めて調べる。Counterはこの例の順序の違いを照合条件にしていないんだ。
やり直すときはneeded・received・reorderedを掲載した値へ戻して、ファイルを最初から実行しよう。外部への通信やファイル削除は行わないよ。
AIへの依頼は、消す条件より数える条件から
二つの架空の部品一覧を照合してください。
順序は無視しますが、重複する個数は保ってください。
必要数・受領数・不足数・余分数を記号ごとに示してください。
記号は大文字小文字と前後の空白を含めて完全一致とします。
名前を勝手にまとめたり、重複を削除したりしないでください。
これはAIへの依頼例。結果を保証するものではなく、元の一覧と数え上げで検算するための条件だよ。Aとa、Aと「Aの後に空白」を同じ記号にするかは、データの仕様次第。今回のコードは文字列をそのまま比較している。
編集部では2026年11月1日にPython公式資料を確認し、掲載コードと空の一覧・片側だけ重複・順序だけ違う例をPython 3.12.14で検算した。この練習は、記録のどれを消すかを決めるIDを使った重複候補の確認とは別の問い。CSVのレコード数を数える記事も、元データの件数をそろえるときに役立つよ。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。