0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonの辞書とリストをスマートに合体させる「辞書アンパック()」活用術**

0
Posted at

辞書アンパックが「本領発揮」する瞬間

単なる辞書同士のマージなら他の方法もありますが、「その場で加工しながら展開する」 とき、この書き方は最強の武器になります。

【Before】普通に書くとこうなる(ちょっと冗長)

リスト形式のデータを辞書に変換して、さらに特定の値と合体させる場合、どうしても手順が増えてしまいます。

# 元データ(APIレスポンスなどのイメージ)
json_data = {"result": [{"name": "設計", "count": 3}, {"name": "開発", "count": 8}]}
date = "2026-03-03"

# 1. まずベースを作る
data = {"date": date}

# 2. ループを回して一つずつ追加する
for r in json_data["result"]:
    data[r["name"]] = r["count"]

print(data) 
# {'date': '2026-03-03', '設計': 3, '開発': 8}

【After】辞書アンパック × 内包表記

「データの加工」と「マージ」を {} の中で同時に行います。

data = {
   "date": date,
   # 内包表記で作った辞書を、** でバラしてここに展開!
   **{r["name"]: r["count"] for r in json_data.get("result", [])}
}

ここが「本領発揮」ポイント!

1. 「何を作ろうとしているか」が一行目でわかる

Beforeの書き方だと、最後までコードを読まないと data の全貌が見えません。
Afterなら、
「この辞書は date と、あとの可変データで構成されているんだな」
と一瞬で理解できます。

2. 中間変数(ゴミ)が出ない

Beforeだと、ループ用の変数や一時的なリストが必要になることがありますが、この書き方なら一発で完成形が作れます。

3. get() メソッドとの相性が抜群

もし json_data に "result" というキーがなかった場合、通常の json_data["result"] だとエラー(KeyError)で止まってしまいますが、.get("result", []) なら安全に空の辞書として処理されます。

まとめ

今回紹介した「辞書アンパック()」と「辞書内包表記」の組み合わせは、Pythonらしい「簡潔で読みやすいコード」**を書くための強力なテクニックです。

  1. update() を使わずに、辞書の定義と同時にマージできる
  2. 内包表記を使えば、リストからのデータ加工もその場で完結する
  3. 「何を作ろうとしているか」が一目でわかるコードになる

ぜひ皆さんも、日々のデータ整形やAPIレスポンスの処理で「本領発揮」させてみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?