複数の値をまとめて扱うとき、Python には用途の異なる 4 つの代表的な型があります。本記事では list / tuple / set / dict の違いを、株価データを扱う場面に寄せて整理します。

目次

  1. 4 つのコレクション型の比較
  2. list — 順序のある値の並び
  3. tuple — 変えてはいけない組
  4. set — 一意な値の集まり
  5. dict — キーで引く対応付け
  6. 使い分けの目安

4 つのコレクション型の比較

それぞれの型は「順序」「重複」「変更可否」「要素アクセスの方法」が異なります。

順序重複変更主な用途
listあり株価系列など順序のあるデータ
tupleあり不可変えてはいけない組(座標・日付の範囲など)
setなし不可一意な値の集まり(重複排除・集合演算)
dictあり(挿入順)キーは不可キーで引く対応付け(銘柄コード→社名など)

「順序が必要か」「重複を許すか」「キーで引きたいか」の 3 点で選ぶと迷いにくくなります。

list — 順序のある値の並び

リストは最も使用頻度が高いコレクション型です。[ ] で囲んで作ります。

prices = [2900, 2925, 2880, 2910, 2945]
print(prices[0]) # 2900 (先頭)
print(prices[-1]) # 2945 (末尾)
print(prices[1:3]) # [2925, 2880] (スライス)
print(len(prices)) # 5

要素の追加・削除も柔軟に行えます。

prices.append(2960) # 末尾に追加
prices.insert(0, 2880) # 先頭に挿入
prices.pop() # 末尾を取り出して削除
prices.remove(2880) # 値を指定して最初の一致を削除

時系列の終値や日付列など、順序が意味を持つデータに向いています。

tuple — 変えてはいけない組

タプルはリストに似ていますが、作成後は変更できません。( ) で囲みます。

date_range = ("2026-04-01", "2026-04-30")
ohlc = (2900, 2950, 2880, 2925) # 始値・高値・安値・終値
# date_range[0] = "2026-05-01" # ❌ TypeError

「2 つの値をペアで返したい」「定数として扱いたい」場面で使います。関数が複数の値を返すときも、内部的にはタプルが返ります。

def min_max(values: list[int]) -> tuple[int, int]:
return min(values), max(values)
low, high = min_max([2900, 2925, 2880])
print(low, high) # 2880 2925

set — 一意な値の集まり

集合は重複を許さない型です。{ } で囲んで作ります(空集合は set())。

watchlist_a = {"7203", "9984", "6758"}
watchlist_b = {"9984", "6758", "8035"}
print(watchlist_a | watchlist_b) # 和集合: {'7203', '9984', '6758', '8035'}
print(watchlist_a & watchlist_b) # 積集合: {'9984', '6758'}
print(watchlist_a - watchlist_b) # 差集合: {'7203'}

「重複を取り除きたい」「2 つのリストの共通銘柄を抽出したい」場面で威力を発揮します。

tickers = ["7203", "9984", "7203", "6758"]
unique_tickers = set(tickers)
print(unique_tickers) # {'7203', '9984', '6758'}

dict — キーで引く対応付け

辞書は「キー」と「値」を対応させて持つ型です。{ key: value } の形で作ります。

companies = {
"7203": "トヨタ自動車",
"9984": "ソフトバンクグループ",
"6758": "ソニーグループ",
}
print(companies["7203"]) # トヨタ自動車
print(companies.get("0000", "—")) # — (存在しないキーの安全な取り出し)
print("9984" in companies) # True

ループでは .items() でキーと値を同時に取り出せます。

for code, name in companies.items():
print(f"{code}: {name}")

銘柄コードから社名を引くときや、API レスポンスの JSON を扱うときの中心になる型です。

使い分けの目安

実際の分析コードで迷ったら、次の質問を順に当てるとほぼ決まります。

  1. キーで値を引きたいか → dict
  2. 重複を排除したいか / 集合演算を使いたいか → set
  3. 作ったあと変えたくないか → tuple
  4. それ以外 → list

生成AI へのプロンプト例

「どの型を使うべきか」を生成AI に相談する例です。

次の処理を書きたいです。Python のどのコレクション型を使うのが
適切か、理由とサンプルコードを教えてください。
- 100 銘柄ぶんの銘柄コードと社名を保持しておき、銘柄コードから
社名を高速に取り出したい
- 銘柄コードは重複しない
- 後から銘柄を追加・削除する可能性がある

選択の根拠とサンプルコードがセットで返ると、判断のクセが身に付きやすくなります(#7-2「データ分析のためのプロンプト設計」)。

まとめ

  • list は順序のある値の並びで、変更可能
  • tuple はリストに似ているが変更不可。固定の組に使う
  • set は重複なし。集合演算と高速な所属判定が得意
  • dict はキーで値を引く対応付け。API レスポンスの中心になる型