Menu
CoddyTech

集合としての辞書

CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 32/78。

配列をセットに変換するには、配列をループして各値をキーにします。重複する値は同じキーになります:

var reports := ["spam", "scam", "spam"]
var banned := {}
for word in reports:
	banned[word] = true
print(banned.keys()) # ["spam", "scam"]

値がメンバーかどうかを確認するには、has()またはin演算子を使います。辞書では、どちらも値ではなくキーを調べます。

print(banned.has("scam")) # true
print("hello" in banned) # false
print("hello" not in banned) # true

配列にもhas()がありますが、値を要素と1つずつ比較します。辞書はキーを直接検索するため、セットのメンバーシップチェックは要素が数千個あっても高速なままです。

セットに対するforループは、追加された順にその要素を処理します:

for word in banned:
	print(word) # spam、次にscam
challenge icon

チャレンジ

簡単

パーティーの入り口でゲストを確認します。プログラムは入力を2行読み取ります。

  1. ゲストリスト:名前がスペースで区切られています。同じ名前が複数回書かれていることがあります。
  2. 到着する人々:名前がスペースで区切られています。

ゲストリストから集合 guests を作成します。リストにいる異なる人の人数を出力し、その後、到着する人ごとに1行ずつ出力します。リストにいる場合は NAME: welcome、いない場合は NAME: not on the list と出力します。入力が次の場合:

mia leo ana mia
mia sam ana

出力は次のとおりです。

Guests on the list: 3
mia: welcome
sam: not on the list
ana: welcome

自分で試してみよう

extends Node

func _ready():
	var guest_list := OS.read_string_from_stdin().split(" ", false)
	var arrivals := OS.read_string_from_stdin().split(" ", false)
	var guests := {}

	# ゲストの集合を作成する

	# ゲストの人数を出力し、到着者を一人ずつ確認する
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: GDScriptオンラインコンパイラ