Dictionnaires imbriqués
Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 19 sur 78.
Une valeur de dictionnaire peut être un autre dictionnaire. Un dictionnaire imbriqué regroupe des données liées : les clés externes désignent les enregistrements, et chaque dictionnaire interne contient les champs d’un enregistrement.
var heroes := {
"Mia": {"hp": 100, "class": "mage"},
"Leo": {"hp": 80, "class": "knight"}
}Enchaîne les clés pour accéder à une valeur à l’intérieur. heroes["Mia"] est le dictionnaire interne de Mia, et ["hp"] y accède. Les affectations fonctionnent de la même manière :
print(heroes["Mia"]["hp"]) # 100
heroes["Leo"]["hp"] -= 30 # Leo subit des dégâts
heroes["Mia"]["mana"] = 50 # ajoute une paire à Mia uniquement
print(heroes["Mia"]){ "hp": 100, "class": "mage", "mana": 50 }Pour ajouter un enregistrement complet, attribuez un dictionnaire à une nouvelle clé externe : heroes["Ana"] = {"hp": 90, "class": "archer"}.
Une clé manquante à l’un ou l’autre niveau est une erreur. Lorsqu’un enregistrement peut être manquant, appelle get() en lui passant un dictionnaire vide comme valeur par défaut, puis appelle à nouveau get() sur le résultat :
print(heroes.get("Zed", {}).get("hp", 0)) # 0Pour accéder à chaque valeur interne, parcourez les clés externes et lisez les valeurs dans chaque dictionnaire interne :
var total_hp := 0
for hero in heroes:
total_hp += heroes[hero]["hp"]
print(total_hp) # 150Défi
FacileLe dictionnaire imbriqué inventory est fourni : chaque clé externe correspond à un rayon, chaque clé interne à un article, et chaque valeur interne à la quantité en stock.
Le programme lit une ligne : des recherches écrites sous la forme department/item, séparées par des virgules. Pour chaque recherche, dans l’ordre, affiche une ligne :
- la recherche, deux-points, une espace et la quantité, lorsque ce rayon possède cet article
- la recherche suivie de
: missing, lorsque le rayon ou l’article n’existe pas
Affiche ensuite Total inventory: suivi de la somme de toutes les quantités dans tous les rayons.
Pour l’entrée fruits/apples,meat/beef,fruits/kiwis,candy/gum, la sortie est :
fruits/apples: 12
meat/beef: 7
fruits/kiwis: missing
candy/gum: missing
Total inventory: 39Essayez vous-même
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(",")
# Affiche la quantité correspondant à chaque recherche, ou missing
# Affiche la somme de toutes les quantités
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