Menu
CoddyTech

Array berisi Dictionary

Termasuk bagian Logika dan Alur dalam perjalanan GDScript di Coddy. Pelajaran 20 dari 78.

Jika kamu memiliki banyak record dengan field yang sama, simpan semuanya dalam array of dictionaries: setiap elemen adalah satu record.

var enemies := [
	{"type": "slime", "hp": 30},
	{"type": "orc", "hp": 80},
	{"type": "dragon", "hp": 500}
]

Indeks memilih record dan key memilih field: enemies[1]["type"] bernilai "orc". for loop memberimu satu dictionary pada setiap perulangan:

for enemy in enemies:
	if enemy["hp"] >= 80:
		print(enemy["type"])
orc
dragon

Tambahkan record dengan append(). Untuk mengubah field setiap record, lakukan assignment melalui variabel loop. Seperti array, dictionary digunakan bersama, bukan disalin, jadi enemy adalah dictionary di dalam array dan perubahan akan tetap tersimpan di sana:

enemies.append({"type": "bat", "hp": 10})
for enemy in enemies:
	enemy["hp"] += 5
print(enemies[3]) # { "type": "bat", "hp": 15 }

Untuk menemukan record berdasarkan salah satu field-nya, lakukan perulangan dan bandingkan. Mulailah dengan null, agar kamu bisa mengetahui jika tidak ada yang cocok:

var found = null
for enemy in enemies:
	if enemy["type"] == "orc":
		found = enemy
if found == null:
	print("No orc")
else:
	print(found["hp"]) # 85

print() menampilkan seluruh array beserta setiap dictionary di dalamnya: [{ "type": "slime", "hp": 35 }, ...].

challenge icon

Tantangan

Mudah

Buat papan peringkat. Program membaca bilangan bulat n, lalu n baris, masing-masing berisi nama pemain dan skor yang dipisahkan dengan koma, seperti Mia,95.

  1. Untuk setiap baris, tambahkan dictionary dengan kunci "name" (nama) dan "score" (skor sebagai int) ke array players.
  2. Cetak array tersebut.
  3. Cetak Best: , nama pemain dengan skor tertinggi dan skornya dalam tanda kurung. Jika dua pemain memiliki skor tertinggi yang sama, cetak pemain yang pertama.

Untuk input 3, Mia,95, Leo,80, dan Ana,97, output-nya adalah:

[{ "name": "Mia", "score": 95 }, { "name": "Leo", "score": 80 }, { "name": "Ana", "score": 97 }]
Best: Ana (97)

Coba sendiri

extends Node

func _ready():
	var n := int(OS.read_string_from_stdin())
	var players := []

	# Baca n pemain ke dalam array

	# Cetak array dan pemain terbaik
	pass
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler GDScript online