← クエスト一覧

クエスト50:defaultdictを使おう

スライド 1 / 6
コーデ
💻 コード例
実行結果
← クエスト一覧
🐍 Python / Quest 50 / 85

クエスト50:defaultdictを使おう

応用 +10 XP
🏠
今回の課題
単語リストを「最初の文字」でグループ分けして、「a: ['apple', 'ant']」のように表示しよう。
📖 解説を見る
🗂️ defaultdict って何?

defaultdict は、まだ無いキーにアクセスしても、自動で初期値を用意してくれる辞書です。defaultdict(list) なら、初めてのキーに空リストが入ります。

✏️ 書き方:
from collections import defaultdict
d = defaultdict(list)
d['x'].append(1)
 ← d['x'] がまだ無くてもエラーにならず、{'x': [1]} になる

📋 作るもの:
defaultdict(list) で辞書 d を用意する
wordsfor でまわし、その単語の最初の文字をキーにして、単語をそこのリストに追加する
・単語の最初の文字は word[0] で取り出せる
下の表示ループは書いてあるので、グループ分けの部分だけ作ればOK

💡 どこで使う?

「キー別にまとめる」グループ分けや集計で使います。ふつうの辞書だと『キーが無ければ空リストを作る』処理を毎回書く必要がありますが、defaultdict ならその手間が消えます。頭文字ごとの分類、カテゴリ別の集計、グラフの隣接リストなどで定番です。

⚠️ ポイント:
defaultdict(list) は初期値が空リスト []
word[0] で単語の最初の文字を取り出せる
ヒントを見る
defaultdict(list) で辞書を作ると、初めてのキーでも空リストが用意されるよ。for でまわして、最初の文字をキーにした場所へ単語を append しよう。
期待する出力
a: ['apple', 'ant']
b: ['ball', 'bee']
c: ['cat', 'car']
📄 見本
「答えを見る」を押すと、お手本のコードが出ます。クリックでコピーできます。
💻 コードエディタ
実行すると結果がここに表示されます
正解!見本と同じになりました。
次へ →
🏠 ホームへ

れんしゅうもんだい

☑ 0 / 3 正解 レッスンに戻る

全問正解でクエストクリア!

未挑戦

問題 1: defaultdict(int) で scores に 'A' を +10、+20、'B' を +5 して A と B の合計を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
A: 30 B: 5
未挑戦

問題 2: grades = [('A', 90), ('B', 80), ('A', 95), ('B', 70)] をグループ化してクラスごとの平均を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
A: 92.5 B: 75.0
未挑戦

問題 3: defaultdict(set) を使って 'hello' の文字種類数を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
4
コピーしました!