解説
AIに上位3件を選ばせる前に:同点・並び順・件数の条件を決めよう
売上の上位3件を出してもらったら、別の集計では4件になった。どちらかが計算を間違えたのではなく、同点の扱いが決まっていないのかもしれないよ。

売上の上位3件を出してもらったら、別の集計では4件になった。どちらかが計算を間違えたのではなく、同点の扱いが決まっていないのかもしれないよ。
ここでは架空の四つの記録を使い、AIへランキングを依頼する条件を整理する。実際の個人成績や顧客データは使わず、表をそのまま検算するよ。
「上位3件」と「3位以内」
| ID | 点数 |
|---|---|
| A | 100 |
| B | 90 |
| C | 80 |
| D | 80 |
必ず3件なら、80点の二つのうちどちらかを選ぶ必要がある。3番目の点数以上をすべて含むなら、A・B・C・Dの4件になる。
順位の付け方にも、同率の次を飛ばす方式や、飛ばさない方式がある。表の見出しが「順位」だけでは、どの規則か分からないことがあるよ。
一件を選ぶ根拠を明記する
同点ならIDの昇順、受付時刻の早い順など、目的に合う第2の条件を決めよう。AIに任せて、理由のない好みで一つを落とさせないようにしたいね。
依頼例は「点数の降順、同点はIDの昇順で、必ず3件を返してください。元の点数を変えず、除外された同点の記録も別に示してください」。
Pythonで同じ条件を照合する
rows = [('A', 100), ('B', 90), ('C', 80), ('D', 80)]
ordered = sorted(rows, key=lambda row: (-row[1], row[0]))
print([row[0] for row in ordered[:3]])
cutoff = ordered[2][1]
print([row[0] for row in ordered if row[1] >= cutoff])
最初はA・B・C、次はA・B・C・Dになる。点数は同じでも、出力する集合の条件が違う例だよ。この小さな計算をPythonで実行して確かめている。
Pythonのソートは安定で、同じキーの入力順を保つ。ただし、入力順が毎回同じとは限らない集計では、必要な並びを明示する方が確認しやすい。安定ソートだけで、事業上の同点ルールが決まるわけではないんだ。
出力の確認項目
- 件数を固定するか、同点を全件含むか。
- 同点を一件へ絞るときの条件は何か。
- 空欄や不正な点数はどう扱うか。
- 元の値と出力順が一致するか。
- 同点の境界で結果が変わらないか。

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