Pythonのデータ構造を理解する: リスト、タプル、集合、辞書の使い分け

Pythonのデータ構造:リスト、タプル、集合、辞書の使い分け
それぞれのデータ構造には特徴があり、用途によって最適な選択が変わります。実際の使用例と共に説明します。
リスト (List)
特徴: 順序付き、変更可能、重複可能
使うべき例:
|
1 2 3 4 |
# 学生の名前リスト(順序が重要、後から変更の可能性あり) students = ['太郎', '花子', '次郎'] students.append('良子') # 要素の追加 students[0] = '大太郎' # 要素の変更 |
適している状況:
- データの順序が重要な場合
- コレクションの内容を後から変更する必要がある場合
- 同じ要素を複数回含める必要がある場合
タプル (Tuple)
特徴: 順序付き、変更不可、重複可能
使うべき例:
|
1 2 3 4 5 |
# 座標(x, y)- 一度定義したら変更しない値のペア point = (10, 20) # 個人情報(変更されるべきでないデータ) person = ('山田', '太郎', 30) |
適している状況:
- データが変更されるべきでない場合
- 辞書のキーとして使用する場合(リストはキーに使えない)
- 関数から複数の値を返す場合
- データ保護が必要な場合
集合 (Set)
特徴: 順序なし、変更可能、重複不可
使うべき例:
|
1 2 3 4 5 6 7 8 |
# 訪問済みのユーザーID(重複は意味がない) visited_users = {1001, 1002, 1003, 1004} visited_users.add(1005) # 要素の追加 # 2つのグループの共通メンバーを見つける group_a = {'太郎', '花子', '次郎'} group_b = {'花子', '良子', '健太'} common_members = group_a & group_b # {'花子'} |
適している状況:
- 重複を自動的に排除したい場合
- 集合演算(和集合、積集合、差集合)を行いたい場合
- 要素の存在確認を高速に行いたい場合
辞書 (Dictionary)
特徴: キーと値のペア、順序付き(Python 3.7以降)、キーは一意
使うべき例:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 学生の成績管理(名前と点数の対応) scores = { '太郎': 85, '花子': 92, '次郎': 78 } scores['良子'] = 90 # 新しい生徒の追加 # 商品管理 product = { 'id': 'A001', 'name': 'ノートパソコン', 'price': 98000, 'in_stock': True } |
適している状況:
- キーと値のマッピングが必要な場合
- 高速なルックアップ(検索)が必要な場合
- 複雑なデータ構造を表現する場合
- JSONとの相互変換が必要な場合
実践的な使い分け例
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# リスト:順序付きデータ shopping_list = ['卵', '牛乳', 'パン', 'りんご'] # タプル:不変データ rgb_color = (255, 128, 0) weekdays = ('月', '火', '水', '木', '金', '土', '日') # 集合:一意な値のコレクション unique_visitors = {192, 195, 198, 203, 192} # 自動的に重複排除 # 辞書:キーと値のマッピング user = { 'username': 'tanaka', 'email': 'tanaka@example.com', 'active': True, 'login_count': 42 } |
以上の特徴を踏まえて、状況に応じて最適なデータ構造を選ぶことが重要です。データの性質や操作の種類によって、最も効率的な選択が変わってきます。












最近のコメント