0Pricing
Python Academy · レッスン

集合内包表記と辞書内包表記

集合や辞書に内包表記のパターンを適用します。

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

はじめに

同じ内包表記の構文は、セットと辞書にも使用できます。それぞれ一意な要素とキーと値の対応を生成します。

セット内包表記の構文

{expression for item in iterable} は、コロンを使わず中括弧で記述します。結果は順序を持たず、重複しないセットになります。
unique_lens = {len(w) for w in ['apple','banana','fig']}
print(unique_lens)

セット内包表記による重複排除

式の結果が重複している場合、重複分は自動的に破棄されます。{x%3 for x in range(9)} は {0,1,2} になります。
mods = {x % 3 for x in range(9)}
print(mods)

条件付きセット内包表記

{x for x in range(20) if x%2==0 and x%3==0} は、2 と 3 の両方で割り切れる数を生成します。
print({x for x in range(20) if x%2==0 and x%3==0})

辞書内包表記の構文

{key_expr: val_expr for item in iterable} は、for の前に key:value を置きます。辞書を作成します。
squares = {x: x**2 for x in range(5)}
print(squares)

条件付き辞書内包表記

{k: v for k, v in d.items() if v > 0} は、辞書を正の値だけに絞り込みます。
d = {'a': 1, 'b': -2, 'c': 3}
pos = {k: v for k, v in d.items() if v > 0}
print(pos)

辞書の反転

{v: k for k, v in d.items()} は、キーと値を入れ替えます。すべての値が一意で、ハッシュ可能である必要があります。
d = {'a': 1, 'b': 2, 'c': 3}
print({v: k for k, v in d.items()})

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

{letter: [w for w in words if w[0]==letter] for letter in 'abc'} は、単語を先頭文字ごとにグループ化します。
words = ['apple','ant','banana','cherry','cat']
grouped = {l: [w for w in words if w.startswith(l)] for l in 'abc'}
print(grouped)

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

{k: v for k, v in zip(keys, vals)} は、変換が必要な場合に dict(zip(keys, vals)) よりも簡潔です。
keys = ['x', 'y', 'z']
vals = [1, 4, 9]
print({k: v**0.5 for k, v in zip(keys, vals)})

ネストした辞書内包表記

{i: {j: i*j for j in range(3)} for i in range(3)} は、ネストした辞書として九九の表を作成します。
table = {i: {j: i*j for j in range(3)} for i in range(3)}
print(table)

使い分け

一意な値が必要な場合はセット内包表記を使用します。キーと値の対応が必要な場合は辞書内包表記を使用します。順序が重要な場合はリスト内包表記を使用します。
words = ['hello', 'world', 'hello']
unique = {w for w in words}
lengths = {w: len(w) for w in unique}
print(lengths)

理解度チェック

セット内包表記と辞書内包表記の構文上の主な違いは何ですか。

まとめ

セット内包表記は {expr for x in it}、辞書内包表記は {k: v for x in it} の形です。どちらも if によるフィルタリングに対応しています。辞書ではキーが一意でハッシュ可能である必要があります。

次へ進みましょう

すばらしいです。次のレッスンに進んで、スキルをさらに深めましょう。

よくある質問

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

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

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

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

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

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

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

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

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

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

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

  1. リスト内包表記
  2. 集合内包表記と辞書内包表記
  3. ジェネレーター式
  4. yield キーワード
← Python Academyに戻る