2025.08.09(更新日: 2025.08.26)
複数の値の出力はリストより辞書がいい
はじめに
前回のソースコード版をやっていこう。
リストの場合、zipで頑張る必要あり
# === Before ===
id_list = [1, 2]
name_list = ["a", "b"]
# idだけ処理
for id_val in id_list:
print(f"id: {id_val}")
# nameだけ処理
for name_val in name_list:
print(f"name: {name_val}")
# idとnameを一緒に使いたいとき(zipで頑張る必要あり)
for id_val, name_val in zip(id_list, name_list):
print(f"id: {id_val}, name: {name_val}")
出力結果
id: 1
id: 2
name: a
name: b
id: 1, name: a
id: 2, name: b
idとnameを一緒に使いたい時は、zipで頑張る必要あり。
実際に昨日の自分も頑張っていた。
いや、zipを使いこなせていなかった。
zipを使えば、やりたいことができたかもしれない。
総ての過去を未来に繋げていこう。

スキル不足を認識できてよかった。
無意識的無能から意識的無能へのジャンプに成功した。
辞書の場合、まとめて出力できる
# === After ===
data_list = [
{"id": 1, "name": "a"},
{"id": 2, "name": "b"}
]
# idとnameをまとめて処理
for item in data_list:
print(f"id: {item['id']}, name: {item['name']}")
# nameだけ取り出す
for item in data_list:
print(item["name"])
# idをキーに高速アクセスしたい場合は辞書の辞書も可
data_dict = {item["id"]: {"name": item["name"]} for item in data_list}
print(data_dict[1]["name"]) # → "a"
出力結果
id: 1, name: a
id: 2, name: b
a
b
a
data_dictがどうなっているか?
こうなっていた。
data_dict
{1: {'name': 'a'}, 2: {'name': 'b'}}
これはありがたい。
これできるんだ!
リスト → 辞書の変換
id_list = [1, 2]
name_list = ["a", "b"]
data_list = [{"id": id_val, "name": name_val} for id_val, name_val in zip(id_list, name_list)]
print(data_list)
# → [{'id': 1, 'name': 'a'}, {'id': 2, 'name': 'b'}]
出力結果
[{'id': 1, 'name': 'a'}, {'id': 2, 'name': 'b'}]
この変換は、必要があれば行おう。
現状は、リストに直さずに、API送信されたデータをそのまま辞書に変換すればいいはず。
→ Pydantic v2のmodel_dump関数で変換した。
data = model_instance.model_dump()
ベースモデルを介した後のデータ型が辞書かもしれない。
いや、それは、ベースモデルを継承したクラスのデータ型になっている。
そのデータ構造をそのまま利用すればよかったかもしれない。
余計なことをしてしまった。
シンプルに考えよう。
シンプルに考えるのが一番難しい。
突き詰めて考えるとシンプルになるというパラドックスがある。
PydanticのBaseModel
Pythonのデータバリデーションと設定管理を行うためのライブラリ。
FastAPIなどのWebフレームワークでよく使われている。
使用例
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str
email: str
# 正しいデータ
user = User(id=1, name="Hiroki", email="test@example.com")
print(user)
# 自動変換
user = User(id="2", name="Taro", email="taro@example.com")
print(user.id) # int型の2になる
# 間違ったデータ
User(id="abc", name="Yuki", email="yuki@example.com")
# => ValidationError: id が整数ではない
コメントを残す