Unire dizionari
Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 21 di 78.
merge() aggiunge ogni coppia dell'altro dizionario al dizionario su cui la chiami. Le chiavi presenti solo nell'altro dizionario vengono aggiunte alla fine:
var settings := {"volume": 5, "difficulty": "normal"}
var saved := {"difficulty": "hard", "subtitles": true}
settings.merge(saved)
print(settings){ "volume": 5, "difficulty": "normal", "subtitles": true }"difficulty" è presente in entrambi i dizionari e merge() ha mantenuto il valore che settings aveva già: per impostazione predefinita, le chiavi esistenti non vengono sovrascritte. Passa true come secondo argomento per far prevalere l'altro dizionario:
var options := {"volume": 5, "difficulty": "normal"}
options.merge(saved, true)
print(options["difficulty"]) # hardmerge() modifica il dizionario stesso e non restituisce nulla, quindi var result := a.merge(b) è un errore. Per mantenere entrambi i dizionari invariati, usa merged(). Accetta gli stessi argomenti e restituisce un nuovo dizionario:
var defaults := {"volume": 5, "difficulty": "normal"}
var choice := {"difficulty": "hard"}
var final_settings := defaults.merged(choice, true)
print(final_settings) # { "volume": 5, "difficulty": "hard" }
print(defaults) # { "volume": 5, "difficulty": "normal" }Quando una chiave è presente in entrambi i dizionari e vuoi combinare i valori, ad esempio sommare due importi, scrivi tu il ciclo:
var bag := {"gold": 10, "gems": 1}
var loot := {"gold": 5, "keys": 2}
for key in loot:
bag[key] = bag.get(key, 0) + loot[key]
print(bag) # { "gold": 15, "gems": 1, "keys": 2 }Sfida
FacileUn aggiornamento del gioco ha aggiunto nuove impostazioni. Le impostazioni salvate dal giocatore vengono lette da una riga di input, scritte come coppie key=value separate da virgole (la riga può essere vuota). Il codice fornito le memorizza nel dizionario saved.
Completa le impostazioni mancanti nel salvataggio: aggiungi a saved ogni coppia di defaults la cui chiave non è ancora presente, senza modificare i valori scelti dal giocatore e senza modificare defaults. Poi stampa saved e stampa defaults nella riga successiva.
Per l'input difficulty=hard,volume=8, l'output è:
{ "difficulty": "hard", "volume": "8", "subtitles": "off", "language": "en" }
{ "difficulty": "normal", "volume": "5", "subtitles": "off", "language": "en" }Provalo tu
extends Node
func _ready():
var defaults := {"difficulty": "normal", "volume": "5", "subtitles": "off", "language": "en"}
var saved := {}
for pair in OS.read_string_from_stdin().split(",", false):
var parts := pair.split("=")
saved[parts[0]] = parts[1]
# Aggiungi a saved i valori predefiniti mancanti, poi stampa entrambi i dizionari
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