Tableaux de dictionnaires
Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 20 sur 78.
Lorsque tu as de nombreux enregistrements avec les mêmes champs, stocke-les dans un tableau de dictionnaires : chaque élément est un enregistrement.
var enemies := [
{"type": "slime", "hp": 30},
{"type": "orc", "hp": 80},
{"type": "dragon", "hp": 500}
]Un index sélectionne l’enregistrement et une clé sélectionne le champ : enemies[1]["type"] vaut "orc". Une boucle for te donne un dictionnaire à chaque itération :
for enemy in enemies:
if enemy["hp"] >= 80:
print(enemy["type"])orc
dragonAjoute un enregistrement avec append(). Pour modifier un champ de chaque enregistrement, fais une affectation via la variable de boucle. Comme les tableaux, les dictionnaires sont partagés et non copiés : enemy est donc le dictionnaire qui se trouve dans le tableau, et la modification y est conservée :
enemies.append({"type": "bat", "hp": 10})
for enemy in enemies:
enemy["hp"] += 5
print(enemies[3]) # { "type": "bat", "hp": 15 }Pour trouver un enregistrement à partir de l’un de ses champs, parcourez les éléments et comparez-les. Commencez par null, afin de pouvoir savoir si rien ne correspond :
var found = null
for enemy in enemies:
if enemy["type"] == "orc":
found = enemy
if found == null:
print("No orc")
else:
print(found["hp"]) # 85print() affiche le tableau entier avec tous les dictionnaires qu’il contient : [{ "type": "slime", "hp": 35 }, ...].
Défi
FacileConstruis un classement. Le programme lit un nombre entier n, puis n lignes, chacune contenant le nom d’un joueur et un score séparés par une virgule, comme Mia,95.
- Pour chaque ligne, ajoute au tableau
playersun dictionnaire contenant les clés"name"(le nom) et"score"(le score sous forme d’int). - Affiche le tableau.
- Affiche
Best:, le nom du joueur ayant le score le plus élevé, puis son score entre parenthèses. Si deux joueurs ont le même score le plus élevé, affiche le premier.
Pour les entrées 3, Mia,95, Leo,80 et Ana,97, la sortie est :
[{ "name": "Mia", "score": 95 }, { "name": "Leo", "score": 80 }, { "name": "Ana", "score": 97 }]
Best: Ana (97)Essayez vous-même
extends Node
func _ready():
var n := int(OS.read_string_from_stdin())
var players := []
# Lis les n joueurs et ajoute-les au tableau
# Affiche le tableau et le meilleur joueur
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