Pythonのリストと辞書
このトピックを修了すると
リストと辞書の相違点を説明し、状況に応じて適切に使い分けることができるようになります。
リスト — 順序付けられたコレクション
リストは、複数の値を順序付けて格納するコンテナです。角括弧 [] で作成します。
python
fruits = ["リンゴ", "バナナ", "ブドウ"]
# インデックスによるアクセスprint(fruits[0]) # 'リンゴ'print(fruits[-1]) # 'ブドウ'
# 値の変更fruits[1] = "イチゴ" # ['リンゴ', 'イチゴ', 'ブドウ']
# 値の追加/削除fruits.append("マンゴー") # 末尾に追加fruits.insert(0, "スイカ") # 0番目の位置に挿入fruits.remove("ブドウ") # 値で削除del fruits[0] # インデックスで削除リストは可変 (mutable) です。作成後に自由に修正、追加、削除できます。
リストの反復処理と加工
python
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
# 反復処理for n in numbers: print(n, end=" ") # 3 1 4 1 5 9 2 6
# ソートsorted_nums = sorted(numbers) # [1, 1, 2, 3, 4, 5, 6, 9] — 元のリストは変更しないnumbers.sort() # 元のリスト自体をソート
# 便利な組み込み関数print(len(numbers)) # 8print(sum(numbers)) # 31print(min(numbers)) # 1print(max(numbers)) # 9
# リスト内包表記 — 1行で新しいリストを作成squares = [x ** 2 for x in range(5)]# [0, 1, 4, 9, 16]リスト内包表記は、for ループを1行に圧縮したものです。Pythonコードで非常に頻繁に見られるため、慣れておく必要があります。
辞書 — 名前で検索するストア
辞書は、キーと値のペアとしてデータを格納します。中括弧 {} で作成します。
python
user = { "name": "キム・フン", "age": 30, "email": "hoon@example.com"}
# 検索print(user["name"]) # 'キム・フン'print(user.get("phone")) # None (エラーの代わりにNoneを返す)
# 値の追加/更新user["phone"] = "010-1234" # キーが存在しない場合は追加user["age"] = 31 # キーが存在する場合は更新
# 値の削除del user["email"]リストが「何番目?」(インデックス)で検索するのに対し、辞書は「名前は?」(キー)で検索します。キーは通常文字列ですが、数値やタプルも使用できます。
辞書の反復処理
python
scores = {"国語": 90, "英語": 85, "数学": 95}
# キーの反復処理for subject in scores: print(subject) # 国語、英語、数学
# キーと値の同時反復処理for subject, score in scores.items(): print(f"{subject}: {score}点")
# 値のみの反復処理total = sum(scores.values())print(f"合計点: {total}") # 270
# キーの存在確認if "科学" in scores: print(scores["科学"])else: print("科学の点数はありません").items() は (キー, 値) のペアを返します。.keys() はキーのみ、.values() は値のみを返します。
リスト vs 辞書 — いつ、何を
| 状況 | 選択 | 理由 |
|---|---|---|
| 順序が重要 (1番、2番、3番...) | リスト | インデックスで順序を保証 |
| 名前で検索する必要がある ("name", "age") | 辞書 | キーで即座にアクセス |
| 重複する値は許可する | リスト | [1, 1, 2, 3] が可能 |
| キーは一意である必要がある | 辞書 | 同じキーを2回入れると上書きされる |
| 100万件から検索 | 辞書 | キー検索 O(1) vs リスト検索 O(n) |
実務で最も一般的なパターンは、辞書のリストです。データベースのテーブルをイメージしてください。
python
users = [ {"name": "キム・フン", "age": 30}, {"name": "イ・ス", "age": 25}, {"name": "パク・ジン", "age": 35},]
# 30歳以上のユーザーをフィルタリングseniors = [u for u in users if u["age"] >= 30]JSONファイル、APIレスポンス、設定ファイルなど、ほとんどがこの「辞書のリスト」の形式です。この2つのデータ型を自由に組み合わせることができれば、Pythonによるデータ処理の基本を習得したことになります。