Le YAML est un format de représentation de données simple permettant d'associer des valeurs à des clés. Par exemple :
YAML
auteur:Léo et Rafaëltitre:YAML en dictionnairedifficulté:210
Dans cet exemple on peut observer trois clés associées à trois valeurs :
auteur
titre
difficulté
LéoetRafaël
YAMLendictionnaire
210
L'objectif de cet exercice est de traiter des lignes extraites d'un fichier YAML afin de créer le dictionnaire Python correspondant.
On fournit donc une liste de chaînes de caractères correspondant toutes à une ligne extraite d'un fichier YAML. On garantit que, dans chaque ligne, la clé et la valeur sont séparées par la chaîne ": " et que ce séparateur n'apparaît qu'une seule fois dans la ligne. Chaque clé présente n'apparaît qu'une seule fois dans la liste.
La liste correspondant à l'exemple précédent est donc :
🐍 Script Python
yaml=["auteur: Léo et Rafaël","titre: YAML en dictionnaire","difficulté: 210"]
On souhaite à l'issue du traitement obtenir un dictionnaire {clé:valeur} contenant tous les couples (clé,valeur) présents dans la liste. Avec la liste précédente, on obtient :
🐍 Script Python
{"auteur":"Léo et Rafaël","titre":"YAML en dictionnaire","difficulté":210,}
Comme on peut le voir, certaines valeurs sont des nombres. On demande de les convertir au format int. On garantit que ces nombres sont des entiers positifs ou nuls.
Compléter la fonction yaml_en_dictionnaire.
Exemples
>>> yaml=["auteur: Léo et Rafaël","titre: YAML en dictionnaire","difficulté: 210"]>>> yaml_en_dictionnaire(yaml){'auteur': 'Léo et Rafaël', 'titre': 'YAML en dictionnaire', 'difficulté': 210}>>> yaml=["auteur: x","difficulté: 143","classement: 3"]>>> yaml_en_dictionnaire(yaml){'auteur': 'x', 'difficulté': 143, 'classement': 3}>>> yaml=[]>>> yaml_en_dictionnaire(yaml){}
Découper une chaîne
Si l'on considère texte="Léo et Victor et Maxence et Inès et Rafaël", l'instruction texte.split(" et ") renverra ["Léo","Victor","Maxence","Inès","Rafaël"].
Repérer les entiers positifs
Si l'on considère texte="toto", l'instruction texte.isnumeric() renverra False. Par contre avec texte="167", on obtient True.
###(Dés-)Active le code après la ligne # Tests (insensible à la casse) (Ctrl+I)
Entrer ou sortir du mode "deux colonnes" (Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran" (Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)