Menu
CoddyTech

Tạo từ điển

Thuộc phần Kiến thức nền tảng trong hành trình GDScript của Coddy. Bài học 77 trên 92.

Mảng (array) lưu trữ giá trị theo vị trí. Từ điển (dictionary) lưu trữ giá trị theo tên: mỗi giá trị đi kèm với một khóa (key), và bạn dùng khóa để tìm giá trị.

Viết một từ điển bằng dấu ngoặc nhọn. Mỗi cặp gồm một khóa, dấu hai chấm và một giá trị, các dấu phẩy ngăn cách các cặp:

var player := {"name": "Mia", "hp": 100, "alive": true}
print(player)

Đầu ra hiển thị mọi cặp, có một khoảng trắng sau { và trước }:

{ "name": "Mia", "hp": 100, "alive": true }

Mỗi khóa chỉ có thể xuất hiện một lần trong từ điển, nhưng các giá trị có thể lặp lại. Viết cùng một khóa hai lần trong {} sẽ gây lỗi và khiến chương trình dừng trước khi chạy. Khóa và giá trị có thể thuộc bất kỳ kiểu dữ liệu nào: chuỗi, số, giá trị boolean hoặc thậm chí là mảng.

Bạn viết một từ điển (dictionary) rỗng bằng {}. Sau đó, bạn có thể thêm các cặp vào từ điển:

var scores := {}
print(scores) # {  }

Giống như mảng, từ điển có thể được khai báo kiểu. Dictionary[String, int] nghĩa là mọi khóa đều có kiểu String và mọi giá trị đều có kiểu int:

var stock: Dictionary[String, int] = {"apples": 3, "pears": 5}
challenge icon

Thử thách

Dễ

Chương trình đọc ba dòng đầu vào:

  1. Tên anh hùng
  2. Vai trò
  3. Cấp độ (một số nguyên)

Tạo một từ điển có tên hero với ba cặp:

  • "name" ánh xạ đến tên anh hùng
  • "role" ánh xạ đến vai trò
  • "level" ánh xạ đến cấp độ, được lưu dưới dạng int

Sau đó, in từ điển ra. Với đầu vào Mia, Healer và 3, đầu ra là:

{ "name": "Mia", "role": "Healer", "level": 3 }

Tự làm thử

extends Node

func _ready():
	var hero_name := OS.read_string_from_stdin()
	var role := OS.read_string_from_stdin()
	var level := int(OS.read_string_from_stdin())

	# Tạo từ điển (dictionary) cho hero tại đây

	# In từ điển ra tại đây
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch GDScript online