Sözlük Dizileri
Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 20 / 78.
Aynı alanlara sahip çok sayıda kaydınız olduğunda, bunları bir sözlük dizisinde saklayın: her öğe bir kayıttır.
var enemies := [
{"type": "slime", "hp": 30},
{"type": "orc", "hp": 80},
{"type": "dragon", "hp": 500}
]Bir indeks kaydı, bir anahtar ise alanı seçer: enemies[1]["type"], "orc" değeridir. Bir for döngüsü, her yinelemede sana bir sözlük verir:
for enemy in enemies:
if enemy["hp"] >= 80:
print(enemy["type"])orc
dragonappend() ile bir kayıt ekle. Her kaydın bir alanını değiştirmek için döngü değişkeni üzerinden atama yap. Diziler gibi sözlükler de kopyalanmaz, paylaşılır; bu nedenle enemy, dizinin içindeki sözlüktür ve değişiklik orada kalır:
enemies.append({"type": "bat", "hp": 10})
for enemy in enemies:
enemy["hp"] += 5
print(enemies[3]) # { "type": "bat", "hp": 15 }Bir kaydı alanlarından birine göre bulmak için döngüye girip karşılaştırma yap. Hiçbir eşleşme olmadığını anlayabilmek için null ile başla:
var found = null
for enemy in enemies:
if enemy["type"] == "orc":
found = enemy
if found == null:
print("No orc")
else:
print(found["hp"]) # 85print(), içindeki her sözlükle birlikte dizinin tamamını gösterir: [{ "type": "slime", "hp": 35 }, ...].
Görev
KolayBir skor tablosu oluştur. Program bir tam sayı n, ardından her biri virgülle ayrılmış bir oyuncu adı ve skor içeren n satır okur; örneğin Mia,95.
- Her satır için,
playersdizisine"name"(ad) ve"score"(birintolarak skor) anahtarlarına sahip bir sözlük ekle. - Diziyi yazdır.
Best:, en yüksek skora sahip oyuncunun adını ve parantez içinde skorunu yazdır. İki oyuncunun en yüksek skoru eşitse ilkini yazdır.
3, Mia,95, Leo,80 ve Ana,97 girdileri için çıktı şöyledir:
[{ "name": "Mia", "score": 95 }, { "name": "Leo", "score": 80 }, { "name": "Ana", "score": 97 }]
Best: Ana (97)Kendin dene
extends Node
func _ready():
var n := int(OS.read_string_from_stdin())
var players := []
# n oyuncuyu diziye oku
# Diziyi ve en iyi oyuncuyu yazdır
pass
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1String’leri Derinlemesine İnceleme
String MetotlarıString’lerde AramaDeğiştirme ve KırpmaBölme ve BirleştirmeTekrar: Kullanıcı Adı Kontrolü4Sözlükler Bölüm 2
İç İçe SözlüklerSözlük DizileriSözlükleri BirleştirmeSözlükleri KopyalamaTekrar - Frekans Sayacı10İleri Düzey Fonksiyonlar
Birden Fazla Değer DöndürmeLambda Fonksiyonları Bölüm 1Lambda Fonksiyonları Bölüm 2Tekrar - Lambda ile SıralamaÖzyinelemeli Fonksiyonlar Bölüm 1Özyinelemeli Fonksiyonlar Bölüm 2Tekrar - İç İçe Dizilerin Toplamı13Envanter Yönetim Sistemi
Projeye Genel BakışÜrün Ekle2İleri Düzey Karar Verme
Değişkenlerle EşleştirmeEşleştirme KoşullarıDizi KalıplarıSözlük KalıplarıÜyelik KontrolleriÖzet - Komut Ayrıştırıcı5Rehber Uygulaması
Menüyü GörüntüleKişi Ekle8Öğrenci Kayıt Yöneticisi
Proje Genel BakışıÖğrenci Ekle11Üst Düzey Fonksiyonlar
map Metodufilter Metodureduce Metoduany ve allTekrar - E-posta DoğrulayıcıTekrar - Sayı İşleyici3Çok Boyutlu Diziler
2B Dizilere Giriş2B Dizi Elemanlarına Erişim2B Dizilerle İç İçe DöngülerTekrar - 2B DizilerDüzensiz DizilerYaygın 2B Dizi ÖrüntüleriTekrar - Oyun Tahtası6Sözlüklerle Kümeler
Küme Nedir?Küme Olarak SözlükEkleme ve SilmeBirleşim ve KesişimKüme FarkıTekrar: Yinelenenleri Silme9Gelişmiş Veri Toplama
Değerleri ToplamaEn Küçük ve En Büyük Değeri BulmaÖzel SıralamaÖzet - Sözlük SıralayıcıKendi başına pratik yap: Online GDScript derleyicisi