Fusionner des dictionnaires
Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 21 sur 78.
merge() ajoute chaque paire d’un autre dictionnaire au dictionnaire sur lequel vous l’appelez. Les clés qui se trouvent uniquement dans l’autre dictionnaire sont ajoutées à la fin :
var settings := {"volume": 5, "difficulty": "normal"}
var saved := {"difficulty": "hard", "subtitles": true}
settings.merge(saved)
print(settings){ "volume": 5, "difficulty": "normal", "subtitles": true }"difficulty" figure dans les deux dictionnaires, et merge() a conservé la valeur que settings avait déjà : par défaut, les clés existantes ne sont pas écrasées. Passez true en deuxième argument pour laisser l'autre dictionnaire l'emporter :
var options := {"volume": 5, "difficulty": "normal"}
options.merge(saved, true)
print(options["difficulty"]) # hardmerge() modifie le dictionnaire lui-même et ne renvoie rien ; var result := a.merge(b) est donc une erreur. Pour conserver les deux dictionnaires tels quels, utilise merged(). Cette méthode prend les mêmes arguments et renvoie un nouveau dictionnaire :
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" }Lorsqu’une clé se trouve dans les deux dictionnaires et que tu veux combiner les valeurs, par exemple additionner deux montants, écris toi-même la boucle :
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 }Défi
FacileUne mise à jour du jeu a ajouté de nouveaux paramètres. Les paramètres sauvegardés du joueur sont lus à partir d'une ligne d'entrée, écrite sous la forme de paires key=value séparées par des virgules (la ligne peut être vide). Le code donné les stocke dans le dictionnaire saved.
Complète les paramètres manquants dans la sauvegarde : ajoute à saved chaque paire de defaults dont la clé n'y figure pas encore, sans modifier les valeurs choisies par le joueur ni modifier defaults. Affiche ensuite saved, puis affiche defaults sur la ligne suivante.
Pour l'entrée difficulty=hard,volume=8, la sortie est :
{ "difficulty": "hard", "volume": "8", "subtitles": "off", "language": "en" }
{ "difficulty": "normal", "volume": "5", "subtitles": "off", "language": "en" }Essayez vous-même
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]
# Ajoutez les valeurs par défaut manquantes à saved, puis affichez les deux dictionnaires
pass
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux d’exécution
1Les chaînes de caractères en profondeur
Méthodes des chaînesRechercher dans les chaînesRemplacer et supprimer les espacesDécouper et joindreRécapitulatif - Vérifier un nom d’utilisateur4Dictionnaires, partie 2
Dictionnaires imbriquésTableaux de dictionnairesFusionner des dictionnairesCopier des dictionnairesRécapitulatif - Compteur de fréquence7Énumérations
Qu’est-ce qu’une énumération ?Définir une énumérationValeurs d’une énumérationÉnumérations avec matchRécapitulatif - Feu de circulation10Fonctions avancées
Renvoyer plusieurs valeursFonctions lambda, partie 1Fonctions lambda, partie 2Récapitulatif - Tri avec lambdaFonctions récursives, partie 1Fonctions récursives, partie 2Récapitulatif - Somme d’un tableau imbriqué13Système de gestion des stocks
Présentation du projetAjouter un article2Prise de décision avancée
Correspondance avec des variablesGardes de correspondanceMotifs de tableauMotifs de dictionnaireVérifications d’appartenanceRécapitulatif – Analyseur de commandes5Application de carnet d’adresses
Afficher le menuAjouter un contact8Gestionnaire des dossiers étudiants
Aperçu du projetAjouter un étudiant3Tableaux multidimensionnels
Bases des tableaux 2DAccéder aux éléments d’un tableau 2DBoucles imbriquées avec des tableaux 2DRécapitulatif - Tableaux 2DTableaux irréguliersMotifs courants des tableaux 2DRécapitulatif - Plateau de jeu6Les ensembles avec les dictionnaires
Qu’est-ce qu’un ensemble ?Un dictionnaire comme ensembleAjouter et supprimerUnion et intersectionDifférence d’ensemblesRécapitulatif – Supprimer les doublons9Agrégation avancée de données
Additionner des valeursTrouver le minimum et le maximumTri personnaliséRécapitulatif - Trieur de dictionnairesEntraînez-vous par vous-même : Compilateur GDScript en ligne