Pythonの辞書の最大値・最小値を取得する方法!max()・min()を使った応用例
生徒
「Pythonの辞書って、数字が入ってるときに一番大きい値や小さい値を調べることってできますか?」
先生
「できますよ!Pythonにはmax()やmin()という関数があって、それを使えば辞書の中の最大値や最小値を簡単に取得できます。」
生徒
「どうやって使うのか、具体的に知りたいです!」
先生
「では、順を追って丁寧に説明していきましょう。」
1. 辞書とは?基本からおさらい
Pythonの辞書(dictionary)は、「キー(名前)」と「値(データ)」のセットを管理できる便利なデータ構造です。たとえば、商品の名前と値段を管理するときに使います。
以下のような形です:
prices = {
"りんご": 100,
"みかん": 80,
"バナナ": 120
}
この例では、「りんご」などがキーで、100などが値です。
2. 辞書の最大値・最小値を取得するには?
辞書の値(たとえば商品の値段)から、一番高い値段や一番安い値段を見つけるには、max()やmin()という関数を使います。
基本的な使い方はこちらです:
# 商品と値段の辞書
prices = {
"りんご": 100,
"みかん": 80,
"バナナ": 120
}
# 最大値(値段が一番高い商品名)を取得
max_price_item = max(prices, key=prices.get)
# 最小値(値段が一番安い商品名)を取得
min_price_item = min(prices, key=prices.get)
print("一番高い商品は:", max_price_item)
print("一番安い商品は:", min_price_item)
一番高い商品は: バナナ
一番安い商品は: みかん
key=prices.getという書き方は、「この辞書の値を基準にして最大・最小を探すよ」という意味です。
3. 値そのもの(数値)だけを取得するには?
「値段そのもの」だけを知りたいときは、以下のように辞書のキーを使って値を取り出します。
# 一番高い値段
max_price = prices[max_price_item]
# 一番安い値段
min_price = prices[min_price_item]
print("一番高い値段は:", max_price)
print("一番安い値段は:", min_price)
一番高い値段は: 120
一番安い値段は: 80
4. 応用:複数の情報を扱う場合
例えば、以下のように「商品名」と「重さ(g)」の辞書があったとします。
weights = {
"お米": 3000,
"パン": 500,
"水": 2000,
"りんご": 300
}
ここでも同じようにmax()やmin()を使って、重さが最大・最小の商品名を取得できます。
heaviest_item = max(weights, key=weights.get)
lightest_item = min(weights, key=weights.get)
print("一番重いのは:", heaviest_item)
print("一番軽いのは:", lightest_item)
一番重いのは: お米
一番軽いのは: りんご
5. 辞書が空だったときの注意点
もし辞書の中身が空っぽだったら、max()やmin()を使うとエラーが出ます。
empty_dict = {}
# これはエラーになります
# max(empty_dict, key=empty_dict.get)
そのため、使う前に辞書が空かどうかをチェックしておくと安全です。
if empty_dict:
print(max(empty_dict, key=empty_dict.get))
else:
print("データがありません")
データがありません
6. 辞書の中で最大・最小の値だけを取り出す方法
辞書の中で値だけを対象に最大・最小を調べたい場合は、values()を使います。
prices = {
"りんご": 100,
"みかん": 80,
"バナナ": 120
}
# 値だけを対象にする
max_value = max(prices.values())
min_value = min(prices.values())
print("最大の値段は:", max_value)
print("最小の値段は:", min_value)
最大の値段は: 120
最小の値段は: 80
values()は、辞書のすべての「値」だけを取り出す関数です。リストのような扱いができます。
7. どんな場面で役立つ?
この方法は、商品の値段、学生のテストの点数、日別の気温など、「名前と数値の組み合わせ」があるときにとても便利です。
たとえば、次のような場面で活用できます:
- 一番高い商品の名前を出したいとき
- 最低点を取った学生を調べたいとき
- 最高気温の日付を探したいとき
まとめ
Pythonの辞書と最大値・最小値の考え方を振り返る
この記事では、Pythonの辞書を使って最大値や最小値を取得する方法について、基本から応用まで丁寧に学んできました。 辞書はキーと値を組み合わせてデータを管理できるため、数値データを扱う場面で非常に多く使われます。 商品名と価格、名前と点数、日付と気温など、「名前」と「数値」がセットになっているデータ構造は、実務や学習の中でも頻繁に登場します。 そのような場面で、max関数やmin関数を使って最大値や最小値を簡単に調べられることは、大きなメリットになります。
特に重要なポイントは、辞書そのものに対してmaxやminを使う場合、キーが対象になるという点です。 そのため、値を基準に比較したいときには、key引数に辞書名.getを指定する必要があります。 この書き方に慣れることで、辞書の中から「一番大きい値を持つキー」や「一番小さい値を持つキー」を自在に取り出せるようになります。 また、値そのものだけを知りたい場合には、取得したキーを使って辞書から値を参照する方法も学びました。
さらに、valuesを使えば辞書の値だけをまとめて扱うことができ、単純に最大値や最小値の数値を確認したい場合にも対応できます。 辞書が空の場合にエラーが発生する点についても触れ、事前にチェックする重要性を理解しました。 このような細かな注意点を知っておくことで、エラーの少ない安定したプログラムを書くことにつながります。 Python初心者の方にとっても、辞書と最大値・最小値の考え方は、今後の学習の土台になる重要な内容と言えるでしょう。
復習用サンプルプログラム
最後に、この記事で学んだ内容をまとめて確認できるサンプルプログラムを見てみましょう。 辞書、max、min、key指定、valuesの使い方が一度に確認できます。
scores = {
"田中": 78,
"佐藤": 92,
"鈴木": 85,
"高橋": 60
}
# 点数が一番高い生徒
top_student = max(scores, key=scores.get)
# 点数が一番低い生徒
low_student = min(scores, key=scores.get)
# 最大点と最小点
max_score = scores[top_student]
min_score = scores[low_student]
print("最高得点の生徒:", top_student)
print("最低得点の生徒:", low_student)
print("最高点:", max_score)
print("最低点:", min_score)
このように、辞書とmax関数、min関数を組み合わせることで、複雑そうに見える処理もシンプルに書くことができます。 条件分岐や繰り返し処理を多用しなくても、Pythonの標準機能を活用するだけで読みやすいコードになります。 実際の開発や課題制作でも、そのまま応用できる書き方なので、ぜひ手を動かして試してみてください。
生徒
「辞書から最大値や最小値を取るのって、思っていたより簡単なんですね。 keyにgetを指定する意味も、だんだん分かってきました。」
先生
「それは良い理解ですね。辞書はキーと値をどう扱うかが大切なので、 何を基準に比較したいのかを意識できるようになると、一気に使いやすくなります。」
生徒
「点数や値段だけじゃなくて、日付や回数の管理にも使えそうだと思いました。」
先生
「その通りです。今回学んだmaxやminの使い方は、いろいろなデータに応用できます。 辞書と数値の組み合わせを見たら、ぜひこの方法を思い出してください。」
生徒
「これからは、無理にループを書かずに、辞書と関数を上手に使ってみます。」