Dict
dict - crée un dictionnaire : sortes de tableaux associatifs (array) sans nom, mais avec des fonctionalités supplémentaires.
Sommaire |
Syntaxe
dict option ?valeurs?
Description
Dans sa version "humaine", un dictionnaire apparait comme une liste clé-valeur "k1 v1 k2 v2 k3 v3 ...". Attention, l'ordre des couples clé-valeur n'a aucun sens particulier : "k1 v1 k2 v2 k3 v3" et "k2 v2 k1 v1 k3 v3" correspondent au même dictionnaire.
Création d'un dictionnaire
set le_dico [dict create k1 v1 k2 v2 k3 v3]
Faute de dictionnaire, on aurait dû créer un tableau au moyen de la commande:
array set le_tableau {k1 v1 k2 v2 k3 v3}
Récupération de valeurs
Récupération de la valeur "v2" associée � la clé "k2":
puts [dict get $le_dico k2]
# donne v2
Ajouts de valeurs
Ajout de la clé k4 associée � la valeur v4 dans le dictionnaire :
dict set le_dico k4 v4
# k1 v1 k2 v2 k3 v3 k4 v4
Modification de valeurs
Modification le la valeur associée � la clé k3 :
dict set le_dico k3 v3n
# k1 v1 k2 v2 k3 v3n k4 v4
Suppression de valeur
Suppression de la clé k2 (et de sa valeur associée)
dict unset le_dico k2
# k1 v1 k3 v3n k4 v4
Liste des clés
puts [dict keys $le_dico]
# donne k1 k3 k4
puts [dict keys $le_dico *3]
# donne k3
Valeurs liste
dict lappend k5 v5
# donne k1 v1 k3 v3n k4 v4 k5 v5
dict lappend k5 v5a v5b
# donne k1 v1 k3 v3n k4 v4 k5 {v5 v5a v5b}
Nota Bene
Si une procédure doit accéder � un dictionnaire sans le modifier, on peut passer sa valeur. Avec un tableau, il faut toujours passer le nom :
proc get_val_dico {dico k} {return [dict get $dico $k]}
proc get_val_array {arrayName k} {upvar $arrayName array; return $array($k)}
puts [get_val_dico $le_dico k3]; # donne v3n
puts [get_val_array le_tableau k3]; # donne v3