0Pricing
Python Academy · レッスン

辞書内包表記

内包表記構文で簡潔に辞書を作成します。

「辞書内包表記」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。

概要

辞書内包表記を使うと、任意の iterable から簡潔に dict を作成できます。

基本的な dict 内包表記

{k: v for k, v in items} が基本形です。例: {x: x**2 for x in range(5)} は数値をその平方に対応付けます。
squares = {x: x**2 for x in range(5)}
print(squares)

条件を付ける

末尾に if を追加してフィルタリングします: {x: x**2 for x in range(10) if x % 2 == 0} は偶数だけを残します。
evens = {x: x**2 for x in range(10) if x % 2 == 0}
print(evens)

dict の反転

{v: k for k, v in d.items()} はキーと値を入れ替えます。すべての値が一意で、ハッシュ可能な場合にのみ機能します。
d = {'a': 1, 'b': 2, 'c': 3}
inverted = {v: k for k, v in d.items()}
print(inverted)

2つのリストから作成する

{k: v for k, v in zip(keys, values)} は、並列なリストから dict を作成する最も簡潔な方法です。
keys = ['name', 'age']
vals = ['Alice', 30]
d = {k: v for k, v in zip(keys, vals)}
print(d)

値の変換

すべての値に関数を適用します: {k: v.upper() for k, v in d.items()} は、すべての文字列値を大文字に変換します。
d = {'a': 'hello', 'b': 'world'}
result = {k: v.upper() for k, v in d.items()}
print(result)

ネストした dict 内包表記

{outer_k: {inner_k: inner_v} ...} のように内包表記をネストできます。読みやすさを意識してください。複雑になる場合は通常のループを使います。
nested = {i: {j: i*j for j in range(3)} for i in range(3)}
print(nested)

内包表記によるグループ化

プロパティを基準に要素をグループ化します: {k: [v for v in values if condition(v, k)] for k in keys}
words = ['apple', 'art', 'banana', 'blueberry']
grouped = {ch: [w for w in words if w.startswith(ch)] for ch in 'ab'}
print(grouped)

マージと上書き

{**d1, **d2} は、内包表記に似た方法で2つの dict をマージします。重複するキーでは d2 の値が優先されます。
d1 = {'a': 1, 'b': 2}
d2 = {'b': 99, 'c': 3}
merged = {**d1, **d2}
print(merged)

dict と defaultdict

内包表記は通常の dict を作成します。存在しないキーを自動的に初期化する必要がある場合は defaultdict を使います。
from collections import defaultdict
d = defaultdict(list)
for w in ['apple', 'art', 'banana']:
    d[w[0]].append(w)
print(dict(d))

パフォーマンス

dict 内包表記は、同等の for ループで作成するより一般的に高速です。これはインタープリターが内部で最適化するためです。
# Comprehension
squares = {x: x**2 for x in range(1000)}
print(len(squares))

確認問題

{v: k for k, v in d.items()} は何をしますか。

まとめ

dict 内包表記は {k: v for ... if ...} の形式です。反転、値の変換、グループ化、フィルタリングに使います。並列なリストには zip() と組み合わせます。

次へ進む

よくできました。次のレッスンに進み、引き続きスキルを身につけていきましょう。

よくある質問

「辞書内包表記」レッスンは無料ですか?

はい。「辞書内包表記」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。

「辞書内包表記」で何を学びますか?

内包表記構文で簡潔に辞書を作成します。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Python Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「辞書内包表記」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPython Academyレッスンでコードを書いて実行できますか?

はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 辞書の基礎
  2. 辞書のメソッド
  3. 集合と集合演算
  4. 辞書内包表記
← Python Academyに戻る