Dizionari annidati
Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 19 di 78.
Un valore di un dizionario può essere un altro dizionario. Un dizionario annidato raggruppa dati correlati: le chiavi esterne identificano i record e ogni dizionario interno contiene i campi di un record.
var heroes := {
"Mia": {"hp": 100, "class": "mage"},
"Leo": {"hp": 80, "class": "knight"}
}Collega le chiavi per raggiungere un valore all'interno. heroes["Mia"] è il dizionario interno di Mia e ["hp"] legge da esso. Le assegnazioni funzionano allo stesso modo:
print(heroes["Mia"]["hp"]) # 100
heroes["Leo"]["hp"] -= 30 # Leo takes damage
heroes["Mia"]["mana"] = 50 # adds a pair to Mia only
print(heroes["Mia"]){ "hp": 100, "class": "mage", "mana": 50 }Per aggiungere un intero record, assegna un dizionario a una nuova chiave esterna: heroes["Ana"] = {"hp": 90, "class": "archer"}.
Una chiave mancante a uno dei due livelli è un errore. Quando un record potrebbe mancare, chiama get() con un dizionario vuoto come valore predefinito, poi chiama di nuovo get() sul risultato:
print(heroes.get("Zed", {}).get("hp", 0)) # 0Per raggiungere ogni valore interno, itera sulle chiavi esterne e leggi da ciascun dizionario interno:
var total_hp := 0
for hero in heroes:
total_hp += heroes[hero]["hp"]
print(total_hp) # 150Sfida
FacileÈ fornito il dizionario annidato inventory: ogni chiave esterna è un reparto, ogni chiave interna è un articolo e ogni valore interno è la quantità disponibile in magazzino.
Il programma legge una riga: consultazioni scritte come department/item, separate da virgole. Per ogni consultazione, nell'ordine, stampa una riga:
- la consultazione, i due punti, uno spazio e la quantità, se quel reparto contiene quell'articolo
- la consultazione seguita da
: missing, se il reparto o l'articolo non esiste
Poi stampa Total inventory: seguito dalla somma di tutte le quantità di ogni reparto.
Per l'input fruits/apples,meat/beef,fruits/kiwis,candy/gum, l'output è:
fruits/apples: 12
meat/beef: 7
fruits/kiwis: missing
candy/gum: missing
Total inventory: 39Provalo tu
extends Node
func _ready():
var inventory := {
"fruits": {"apples": 12, "bananas": 4},
"meat": {"beef": 7, "chicken": 5},
"dairy": {"milk": 9, "cheese": 2}
}
var lookups := OS.read_string_from_stdin().split(",")
# Stampa la quantità per ogni ricerca, oppure missing
# Stampa il totale di tutte le quantità
pass
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Stringhe in dettaglio
Metodi delle stringheRicerca nelle stringheSostituzione e trimDividere e unireRipasso - verifica del nome utente4Dizionari - Parte 2
Dizionari annidatiArray di dizionariUnire dizionariCopiare dizionariRiepilogo - Contatore di frequenza7Enumerazioni
Che cos'è un'enumerazione?Definire un'enumerazioneValori dell'enumerazioneEnumerazioni in MatchRiepilogo - Semaforo10Funzioni avanzate
Restituire più valoriFunzioni lambda - Parte 1Funzioni lambda - Parte 2Ripasso - Ordinamento con lambdaFunzioni ricorsive - Parte 1Funzioni ricorsive - Parte 2Ripasso - Somma di un array annidato13Sistema di gestione dell'inventario
Panoramica del progettoAggiungere un articolo2Decisioni avanzate
Match con variabiliGuardie di matchPattern per arrayPattern per dizionariVerifiche di appartenenzaRiepilogo - Parser di comandi5Applicazione Rubrica
Visualizzare il menuAggiungere un contatto8Gestione dei registri degli studenti
Panoramica del progettoAggiungi studente11Funzioni di ordine superiore
Il metodo mapIl metodo filterIl metodo reduceany e allRipasso - Validatore di emailRipasso - Elaboratore di numeri3Array multidimensionali
Fondamenti degli array 2DAccedere agli elementi di un array 2DCicli annidati con array 2DRipasso - Array 2DArray frastagliatiSchemi comuni con gli array 2DRipasso - Tabellone di gioco6Insiemi con i dizionari
Che cos'è un insieme?Il dizionario come insiemeAggiungere e rimuovereUnione e intersezioneDifferenza tra insiemiRiepilogo - Rimuovere i duplicati9Aggregazione avanzata dei dati
Somma dei valoriTrovare minimo e massimoOrdinamento personalizzatoRiepilogo - Ordinatore di dizionariEsercitati da solo: Compilatore GDScript online