テーマ:for文を使い、辞書を処理していこう!
辞書とは

辞書(dictionary)は、Pythonでデータをキーと値のペアで管理するためのデータ型です。他の言語でいう「連想配列」に対応しています。
例えば以下のように辞書を作成します。
person = {"名前": "太郎", "年齢": 30, "職業": "教師"}
この辞書は、「キー」と「値」のペアを3組定義しています。
「”名前”」「”年齢”」「”職業”」の部分が「キー」で、「”太郎”」「30」「”教師”」の部分が「値」です。
for文×辞書の基本活用例
キーを順に処理する
for文を使うと、辞書のキーを順番に取り出して処理ができます。
person = {"名前": "太郎", "年齢": 30, "職業": "教師"}
for key in person:
print(key)
実行結果
名前
年齢
職業
キーと値を同時に処理する
辞書の中身を取得する場合、キーと値を同時に扱うこともできます。
person = {"名前": "太郎", "年齢": 30, "職業": "教師"}
for key in person:
print(key + ':' + str(person[key]))
または
person = {"名前": "太郎", "年齢": 30, "職業": "教師"}
for key, value in person.items():
print(f"{key}: {value}")
実行結果
名前: 太郎
年齢: 30
職業: 教師
値を条件付きで処理する
辞書の値に条件を加えて処理する例です。
scores = {"数学": 85, "英語": 92, "理科": 78, "社会": 88}
for subject in scores:
if scores[subject] >= 90:
print(subject)
または
scores = {"数学": 85, "英語": 92, "理科": 78, "社会": 88}
for subject, score in scores.items():
if score >= 90:
print(subject)
実行結果
英語
リストの中の辞書の処理
Pythonでは、リストの中に辞書を格納する構造がよく使われます。これを使うことで、複数の関連するデータを簡潔に管理できます。以下では、この構造を効率よく処理する方法について解説します。
リストの中の辞書とは
例えば、以下のようなデータ構造があります。リストの各要素が辞書となっており、人物情報を表しています。
people = [
{"名前": "太郎", "年齢": 30, "職業": "エンジニア"},
{"名前": "花子", "年齢": 27, "職業": "デザイナー"},
{"名前": "次郎", "年齢": 35, "職業": "マネージャー"}
]
このリストの中の辞書をfor文で順に取り出しながら処理する方法を見てみましょう。
基本的な処理:全ての辞書を表示
リストの要素である辞書を順に取り出すには、以下のようにfor文を使います。
people = [
{"名前": "太郎", "年齢": 30, "職業": "エンジニア"},
{"名前": "花子", "年齢": 27, "職業": "デザイナー"},
{"名前": "次郎", "年齢": 35, "職業": "マネージャー"}
]
for person in people:
print(person)
実行結果
{'名前': '太郎', '年齢': 30, '職業': 'エンジニア'}
{'名前': '花子', '年齢': 27, '職業': 'デザイナー'}
{'名前': '次郎', '年齢': 35, '職業': 'マネージャー'}
辞書内の特定の値を処理する
リストの中にある辞書から特定の値(例えば名前)だけを取り出して表示したい場合、次のように記述します。
people = [
{"名前": "太郎", "年齢": 30, "職業": "エンジニア"},
{"名前": "花子", "年齢": 27, "職業": "デザイナー"},
{"名前": "次郎", "年齢": 35, "職業": "マネージャー"}
]
for person in people:
print(person["名前"])
実行結果
太郎
花子
次郎
条件付きで辞書を処理する
辞書内の値に基づいて条件付きでリストを処理することもできます。例えば、30歳以上の人物のみを表示する場合、以下のように書きます。
people = [
{"名前": "太郎", "年齢": 30, "職業": "エンジニア"},
{"名前": "花子", "年齢": 27, "職業": "デザイナー"},
{"名前": "次郎", "年齢": 35, "職業": "マネージャー"}
]
for person in people:
if person["年齢"] >= 30:
print(person)
実行結果
{'名前': '太郎', '年齢': 30, '職業': 'エンジニア'}
{'名前': '次郎', '年齢': 35, '職業': 'マネージャー'}
リスト内包表記を使った効率的な処理
リスト内包表記を使えば、条件付きで新しいリストを作成することができます。以下に30歳以上の名前だけを抽出する例を示します。
people = [
{"名前": "太郎", "年齢": 30, "職業": "エンジニア"},
{"名前": "花子", "年齢": 27, "職業": "デザイナー"},
{"名前": "次郎", "年齢": 35, "職業": "マネージャー"}
]
names_over_30 = [person["名前"] for person in people if person["年齢"] >= 30]
print(names_over_30)
実行結果
['太郎', '次郎']
まとめ
辞書はキーと値のペアでデータを整理する便利なデータ型であり、for文を使うことで効率的に処理することができます。さらに条件付き処理や辞書内包表記を活用すると、より洗練されたコードを記述可能です。
次回は「range編」について、Pythonのfor文を活用する方法を解説していきます!
コメント