Python入門|リストと辞書の使い方を基礎から解説
Pythonで複数のデータをまとめて扱うには、「リスト」と「辞書」を使います。どちらもプログラミングの基本中の基本であり、家計簿アプリやToDoリストなど、あらゆるプログラムで登場します。この記事では、リストと辞書の使い方を具体的なコード例とともに解説します。
リストの基本
リストは、複数のデータを順番に並べて格納するデータ構造です。買い物リストや成績一覧のように、「順序のあるデータの集まり」を扱うときに使います。
リストの作成
リストは角括弧 [] で作成します。中にはどんな型のデータでも入れられます。
# 文字列のリスト
fruits = ["りんご", "バナナ", "みかん"]
print(fruits) # ['りんご', 'バナナ', 'みかん']
# 数値のリスト
scores = [85, 92, 78, 95, 88]
print(scores) # [85, 92, 78, 95, 88]
# 空のリスト
empty_list = []
print(empty_list) # []
リストの要素にアクセスする
リストの各要素には「インデックス」という番号でアクセスします。インデックスは0から始まる点に注意してください。
fruits = ["りんご", "バナナ", "みかん", "ぶどう"]
# 先頭の要素(インデックス0)
print(fruits[0]) # りんご
# 3番目の要素(インデックス2)
print(fruits[2]) # みかん
# 末尾の要素(マイナスで後ろから数える)
print(fruits[-1]) # ぶどう
# スライスで範囲を取得
print(fruits[1:3]) # ['バナナ', 'みかん']
リストの要素数を調べる
len() 関数でリストの要素数を取得できます。
tasks = ["買い物", "掃除", "洗濯", "料理"]
print(len(tasks)) # 4
リストの追加・変更・削除
リストは作成した後からでも自由に中身を変更できます。これを「ミュータブル(変更可能)」と呼びます。
要素の追加
# 買い物リストを作る
shopping = ["牛乳", "卵"]
# 末尾に追加
shopping.append("パン")
print(shopping) # ['牛乳', '卵', 'パン']
# 指定位置に挿入
shopping.insert(1, "バター")
print(shopping) # ['牛乳', 'バター', '卵', 'パン']
# 複数の要素を一度に追加
shopping.extend(["豆腐", "納豆"])
print(shopping) # ['牛乳', 'バター', '卵', 'パン', '豆腐', '納豆']
要素の変更と削除
colors = ["赤", "青", "黄", "緑"]
# 要素の変更
colors[1] = "水色"
print(colors) # ['赤', '水色', '黄', '緑']
# 値を指定して削除
colors.remove("黄")
print(colors) # ['赤', '水色', '緑']
# インデックスを指定して削除
deleted = colors.pop(0)
print(deleted) # 赤
print(colors) # ['水色', '緑']
リストのループ処理
リストの全要素に対して同じ処理を行いたい場合は、for文を使います。
for文で要素を処理する
# ToDoリストの各タスクを表示
tasks = ["メール確認", "報告書作成", "ミーティング", "資料準備"]
for task in tasks:
print(f"- {task}")
実行結果:
- メール確認
- 報告書作成
- ミーティング
- 資料準備
enumerate()でインデックスと要素を同時に取得
members = ["田中", "佐藤", "鈴木", "高橋"]
for i, name in enumerate(members, start=1):
print(f"{i}番: {name}")
実行結果:
1番: 田中
2番: 佐藤
3番: 鈴木
4番: 高橋
リスト内包表記
リスト内包表記を使うと、for文を1行で書くことができます。新しいリストを作りたいときに便利です。
# 1から10までの偶数の2乗を求める
even_squares = [x ** 2 for x in range(1, 11) if x % 2 == 0]
print(even_squares) # [4, 16, 36, 64, 100]
# 文字列リストをすべて大文字に変換
words = ["hello", "world", "python"]
upper_words = [w.upper() for w in words]
print(upper_words) # ['HELLO', 'WORLD', 'PYTHON']
通常のfor文と比べてコードが短くなりますが、処理が複雑な場合は通常のfor文の方が読みやすくなります。無理にリスト内包表記を使う必要はありません。
辞書の基本
辞書は「キー」と「値」のペアでデータを管理するデータ構造です。名前と電話番号、商品名と価格のように、「ラベル付きのデータ」を扱うときに使います。
辞書の作成
辞書は波括弧 {} で作成し、キー: 値 の形式で要素を並べます。
# ユーザー情報を辞書で管理
user = {
"name": "田中太郎",
"age": 28,
"city": "東京"
}
print(user) # {'name': '田中太郎', 'age': 28, 'city': '東京'}
# 値の取得
print(user["name"]) # 田中太郎
安全に値を取得する
存在しないキーを指定するとエラーになります。get() メソッドを使うと、キーが存在しない場合にデフォルト値を返すことができます。
user = {"name": "田中太郎", "age": 28}
# get()で安全に取得(キーがなければNoneを返す)
print(user.get("city")) # None
print(user.get("city", "不明")) # 不明
# キーの存在確認
if "name" in user:
print(f"名前: {user['name']}")
辞書の追加・変更・削除
辞書もリストと同様に、後から内容を変更できます。
要素の追加と更新
# 商品の在庫管理
stock = {"りんご": 10, "バナナ": 5}
# 新しいキーで追加
stock["みかん"] = 8
print(stock) # {'りんご': 10, 'バナナ': 5, 'みかん': 8}
# 既存のキーで値を更新
stock["りんご"] = 15
print(stock) # {'りんご': 15, 'バナナ': 5, 'みかん': 8}
# 複数のキーを一度に更新
stock.update({"バナナ": 3, "ぶどう": 12})
print(stock) # {'りんご': 15, 'バナナ': 3, 'みかん': 8, 'ぶどう': 12}
要素の削除
stock = {"りんご": 15, "バナナ": 3, "みかん": 8}
# 指定したキーを削除
del stock["バナナ"]
print(stock) # {'りんご': 15, 'みかん': 8}
# pop()で削除しつつ値を取得
removed = stock.pop("みかん")
print(removed) # 8
print(stock) # {'りんご': 15}
辞書のループ処理
辞書の全要素を処理するには、いくつかの方法があります。用途に応じて使い分けましょう。
キーと値をループする
# 家計簿データ
expenses = {
"食費": 35000,
"光熱費": 12000,
"通信費": 8000,
"交通費": 5000
}
# キーと値を同時に取得
for category, amount in expenses.items():
print(f"{category}: {amount:,}円")
# 合計を計算
total = sum(expenses.values())
print(f"合計: {total:,}円")
実行結果:
食費: 35,000円
光熱費: 12,000円
通信費: 8,000円
交通費: 5,000円
合計: 60,000円
辞書のソート
scores = {"国語": 78, "数学": 92, "英語": 85, "理科": 88}
# 値の大きい順に並べ替え
sorted_scores = sorted(scores.items(), key=lambda x: x[1], reverse=True)
for subject, score in sorted_scores:
print(f"{subject}: {score}点")
実行結果:
数学: 92点
理科: 88点
英語: 85点
国語: 78点
リストと辞書を組み合わせる
実際のプログラムでは、リストと辞書を組み合わせてデータを管理することがよくあります。
辞書のリスト
# 社員データを辞書のリストで管理
employees = [
{"name": "田中", "department": "営業", "salary": 300000},
{"name": "佐藤", "department": "開発", "salary": 350000},
{"name": "鈴木", "department": "営業", "salary": 280000},
{"name": "高橋", "department": "開発", "salary": 320000},
]
# 開発部の社員だけ抽出
dev_members = [e for e in employees if e["department"] == "開発"]
for member in dev_members:
print(f"{member['name']} - {member['salary']:,}円")
# 全社員の平均給与を計算
avg_salary = sum(e["salary"] for e in employees) / len(employees)
print(f"平均給与: {avg_salary:,.0f}円")
実行結果:
佐藤 - 350,000円
高橋 - 320,000円
平均給与: 312,500円
実践例: 簡易家計簿
# 支出データ
records = [
{"date": "4/1", "category": "食費", "amount": 1200},
{"date": "4/1", "category": "交通費", "amount": 500},
{"date": "4/2", "category": "食費", "amount": 800},
{"date": "4/2", "category": "日用品", "amount": 2000},
{"date": "4/3", "category": "食費", "amount": 1500},
]
# カテゴリ別に集計
summary = {}
for record in records:
cat = record["category"]
summary[cat] = summary.get(cat, 0) + record["amount"]
print("--- カテゴリ別支出 ---")
for cat, total in summary.items():
print(f"{cat}: {total:,}円")
まとめ
この記事では、Pythonのリストと辞書の基本操作を解説しました。
- リストは順序のあるデータの集まりを扱う。
append()、remove()、pop()で操作する - 辞書はキーと値のペアでデータを管理する。
get()で安全に値を取得できる - for文や
items()を使ってリスト・辞書の全要素を処理できる - リスト内包表記で簡潔に新しいリストを作成できる
- リストと辞書を組み合わせることで、複雑なデータも管理できる
まずは買い物リストや家計簿など身近なデータを使って、リストと辞書の操作を実際に試してみてください。手を動かすことが上達への近道です。