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(),但它会逐个将值与元素进行比较。字典可以直接查找键,因此即使集合中有数千个成员,成员检查也依然很快。

对集合进行 for 循环会按添加顺序遍历其中的成员:

for word in banned:
	print(word) # spam,然后是 scam
challenge icon

挑战

简单

你在派对门口检查来宾。程序会读取两行输入:

  1. 来宾名单:姓名之间用空格分隔。有些姓名会重复出现。
  2. 到场人员:姓名之间用空格分隔。

根据来宾名单创建集合 guests。打印名单上不同人员的数量,然后为每位到场人员打印一行:如果此人在名单上,打印 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 在线编译器