Arrays aus Wörterbüchern
Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 20 von 78.
Wenn du viele Datensätze mit denselben Feldern hast, speichere sie in einem Array aus Dictionaries: Jedes Element ist ein Datensatz.
var enemies := [
{"type": "slime", "hp": 30},
{"type": "orc", "hp": 80},
{"type": "dragon", "hp": 500}
]Ein Index wählt den Datensatz und ein Schlüssel das Feld aus: enemies[1]["type"] ist "orc". Eine for-Schleife liefert dir bei jedem Durchlauf ein Dictionary:
for enemy in enemies:
if enemy["hp"] >= 80:
print(enemy["type"])orc
dragonFüge mit append() einen Datensatz hinzu. Um ein Feld jedes Datensatzes zu ändern, weise ihm über die Schleifenvariable einen Wert zu. Wie Arrays werden auch Dictionaries gemeinsam genutzt und nicht kopiert. Daher ist enemy das Dictionary innerhalb des Arrays, und die Änderung bleibt dort erhalten:
enemies.append({"type": "bat", "hp": 10})
for enemy in enemies:
enemy["hp"] += 5
print(enemies[3]) # { "type": "bat", "hp": 15 }Um einen Datensatz anhand eines seiner Felder zu finden, durchlaufe die Einträge und vergleiche sie. Beginne mit null, damit du erkennen kannst, wenn nichts gefunden wurde:
var found = null
for enemy in enemies:
if enemy["type"] == "orc":
found = enemy
if found == null:
print("No orc")
else:
print(found["hp"]) # 85print() zeigt das gesamte Array mit jedem darin enthaltenen Dictionary an: [{ "type": "slime", "hp": 35 }, ...].
Aufgabe
EinfachErstelle eine Rangliste. Das Programm liest eine ganze Zahl n, dann n Zeilen, die jeweils einen Spielernamen und eine durch ein Komma getrennte Punktzahl enthalten, zum Beispiel Mia,95.
- Füge für jede Zeile dem Array
playersein Wörterbuch mit den Schlüsseln"name"(dem Namen) und"score"(der Punktzahl alsint) hinzu. - Gib das Array aus.
- Gib
Best:, den Namen des Spielers mit der höchsten Punktzahl und die Punktzahl in Klammern aus. Haben zwei Spieler dieselbe höchste Punktzahl, gib den ersten aus.
Für die Eingaben 3, Mia,95, Leo,80 und Ana,97 lautet die Ausgabe:
[{ "name": "Mia", "score": 95 }, { "name": "Leo", "score": 80 }, { "name": "Ana", "score": 97 }]
Best: Ana (97)Probier es selbst
extends Node
func _ready():
var n := int(OS.read_string_from_stdin())
var players := []
# Lies die n Spieler in das Array ein
# Gib das Array und den besten Spieler aus
pass
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablaufsteuerung
1Strings im Detail
String-MethodenIn Strings suchenErsetzen und TrimmenAufteilen und ZusammenfügenRückblick – Benutzernamen prüfen4Wörterbücher Teil 2
Verschachtelte WörterbücherArrays aus WörterbüchernWörterbücher zusammenführenWörterbücher kopierenWiederholung – Häufigkeitszähler10Fortgeschrittene Funktionen
Mehrere Werte zurückgebenLambda-Funktionen Teil 1Lambda-Funktionen Teil 2Wiederholung – Sortieren mit LambdaRekursive Funktionen Teil 1Rekursive Funktionen Teil 2Wiederholung – Verschachteltes Array summieren13Inventarverwaltungssystem
ProjektübersichtArtikel hinzufügen2Fortgeschrittene Entscheidungsfindung
Match mit VariablenMatch-GuardsArray-MusterDictionary-MusterMitgliedschaftsprüfungenRückblick – Befehlsparser5Kontaktbuch-Anwendung
Menü anzeigenKontakt hinzufügen8Schülerdatenverwaltung
ProjektübersichtSchüler hinzufügen3Mehrdimensionale Arrays
Grundlagen zu 2D-ArraysAuf Elemente in 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysWiederholung – 2D-ArraysGezackte ArraysGängige Muster für 2D-ArraysWiederholung – Spielbrett6Mengen mit Dictionaries
Was ist eine Menge?Dictionary als MengeHinzufügen und EntfernenVereinigung und SchnittmengeMengendifferenzWiederholung – Duplikate entfernen9Fortgeschrittene Datenaggregation
Werte summierenMinimum und Maximum findenBenutzerdefiniertes SortierenRückblick – Wörterbuch-Sortierer12Einfache Fehlerbehandlung
Was ist Fehlerbehandlung?Eingaben validierenGuard ClausesFehlercodes zurückgebenRückblick – Sichere DivisionÜbe selbstständig: Online-GDScript-Compiler