辞書の反復処理
CoddyのGDScriptジャーニー「基礎」セクションの一部。レッスン 81/92。
辞書を使ったforループでは、ペアが追加された順にキーが得られます。各キーを使って値を読み取ります。
var stock := {"apples": 3, "pears": 5, "plums": 2}
for fruit in stock:
print(fruit, ": ", stock[fruit])出力は次のとおりです:
apples: 3
pears: 5
plums: 2値だけが必要な場合は、values()をループします。このループでは、すべての果物の数を合計します:
var total := 0
for amount in stock.values():
total += amount
print(total) # 10辞書は物の数を数えることもできます。各単語について、get(word, 0)はこれまでの出現回数を返し、その単語が初めて登場したときは0を返します:
var counts := {}
for word in ["gold", "gem", "gold"]:
counts[word] = counts.get(word, 0) + 1
print(counts) # { "gold": 2, "gem": 1 }チャレンジ
簡単プログラムは入力を1行読み取ります。プレイヤーが拾った戦利品をカンマで区切ったものです。たとえば gold,gem,gold です。
辞書 counts を使って、各アイテムが何回現れるかを数えます。次に、最初に現れた順に、各アイテムとその個数を item: count の形式で1行ずつ出力します。
入力が gold,gem,gold,potion,gold の場合、出力は次のとおりです。
gold: 3
gem: 1
potion: 1自分で試してみよう
extends Node
func _ready():
var loot := OS.read_string_from_stdin().split(",")
var counts := {}
# counts 内の各アイテムの数を数える
# 各アイテムとその個数を出力する
pass
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: GDScriptオンラインコンパイラ