データ構造 – リストと辞書 -(実践編)

はじめに

前回のソースコード版をやっていこう。

リストの場合

# === 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送信されたデータをそのまま辞書に変換すればいいはず。

ベースモデルを介した後のデータ型が辞書かもしれない。

いや、それは、ベースモデルを継承したクラスのデータ型になっている。

そのデータ構造をそのまま利用すればよかったかもしれない。

余計なことをしてしまった。

シンプルに考えよう。

シンプルに考えるのが一番難しい。

突き詰めて考えるとシンプルになるというパラドックスがある。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です