YAML en dictionnaire

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ël
titre: YAML en dictionnaire
difficulté: 210

Dans cet exemple on peut observer trois clés associées à trois valeurs :

auteur titre difficulté
Léo et Rafaël YAML en dictionnaire 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
Évaluations restantes : 10/10

.128013s3Oo_;8bcdufvgI/0lyàq n7AaêpS.r1meh,(P2=4:twki][5Rx)é6050k0I0R0A0U0s0b0w0j0s0A0b0b0O010R0U0C010406050b0l0H0H0A0F0t040D0e0s0l0`0e0x0w020A0H0C0g0w0Y0I140F0v0l0I0b050q111315170 0C041v1C051F0q1F1H1C0 0k0U0n0/0;0?0^0J0U0o0J0s1V0J0R0}050*0i0s0I1Q0=0@011U1W1Y1W0R1(1*1$0R0i0e0k171%0F1D0R0J0/1a0b0C0A0x0^0N011,1S010m0,0I0x1i0I1$27292e1.2h1*2k0H2m040a0w0M0F0e0C0e0b0U1d1f0(250F0F0I0j2H1v2o0x1D0q232T0R2120220k2q0^1Y0x2j2E1$1N1P0:1-2%0U2)0x1}1O1$0C2M1D2R2T2~10281f2/2f2@0F140s0}0G2Q320~312p341.36380}0N3c293e2R2$013j0A39040c3n2S0 3q3h0^3t3v0P3y3p323r3E0}0X3H3A3J3C3s0e373u0}0$3O3f331R3i3T3k040y3Y3B3#3D3%3V040h3H1E2|1v2-2W0k2!3r0j1}2w0%1O1D2{0I2}3d3?3 0(473g3-010T0}0(0m3?3,2:010S0}0w4k3Q4e0x0m0}0t1i0s0f2j0f1N2O0U1e2k0U2M4r4d4m0|040L4K3!4m0x4w4y4Q3r4N0!0Q3O0w4$4q4l354h0U3 3H4(4s4m0e0}0O4.3Z3K0i4+2O4W3R4N0L0!4#4%4_3R4g040m3T4^4)3i0}1=2)5b4:2f0e4o042=5h4L4*044x0H0s4~4e4N4!1w3d064%5C4/5p5d040:0I5v4M0}0K5o4R5q0n3u0I0l0F5O3r4=044@5z3o5E5P5G5f5J5#2S554e5Y0E5K5q271Y0R5=1.505`0^0b2c04010Q0w015}014Y535D5%3r570U4j5,046b3R4T045R1*5U665:666k0U0b0x120I0F4,66504Z696a545c3D0}6m5T5V6g6i5/4?5W6j4{5m0x5_6g5.5L4O6r6I5S6o6W6G670}526g5B6E6X5q4D0e6A0}0W6!5H1*6@040V6Q6O5Z704S6#6n6L2~6.4$6:1.572M0R5U0x736;4,6?6-1v4a463@7p0q3`1v0R3|7u2Y2U1|1~2W0A1)7r3`1B4c5(0^2M0H0f0m0A0T0I0f0J0c0}1n1p1r1t0w5y301I3e1C0d1f1c0,6t1+0k290.1*2K6y0o0#0w7?051o040k0#3 1j0A2O0A0o5+7~0w1r0U0w0C6x2v0R0w0k000A0m0m2N0R6x8i4I8o1o2j8h1*0.6J5U0.2J0(0l0Z0w5R6y7D8x0E060z2=2F0K4q7o6{0I8Q8z0F0w0O7{1V2)0E5@2G0L62646,8S0w1t8h0#8b6J6U0w0u7!1E3e2-3r1:1X1Z1#7I3r2s2j2l0}2y0D0j6y0C8h0M0t231e3?457I2 488S7b6H042D0F2H1u6M9q015Y5!2~6N74045*6p0}5;6(5i5G8(6V306)5|9K5F5~608+659S7J6*046,789y6k5I7i1.9A9+9r9t9v6}6_9Y3r0H0U0}0r6}6 7m6)6k8W9.9z6P9xa00}9:4F0x9w9P9L0^4N9?ad9T019_3a9}3Y0q9p1I3^7s437H0p0s0w7O1c8d15256U2M0w0B2X1+0j6x0*2=8a1s8R409F8#0I8%0C5^8*63018-aR8G0A0w0i0U2j0w7_0x0#2M8X0I0Z848p2v8^8D8F7}0H9s3T9;0q7~9J1L3_0)0+0-04.

###(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
Évaluations restantes : 10/10

.128013s3Oo_;8bcdufvgI/0lyàq n7AaêpS.r1meh,(P2=4:twki][5Rx)é6050k0I0R0A0U0s0b0w0j0s0A0b0b0O010R0U0C010406050b0l0H0H0A0F0t040D0e0s0l0`0e0x0w020A0H0C0g0w0Y0I140F0v0l0I0b050q111315170 0C041v1C051F0q1F1H1C0 0k0U0n0/0;0?0^0J0U0o0J0s1V0J0R0}050*0i0s0I1Q0=0@011U1W1Y1W0R1(1*1$0R0i0e0k171%0F1D0R0J0/1a0b0C0A0x0^0N011,1S010m0,0I0x1i0I1$27292e1.2h1*2k0H2m040a0w0M0F0e0C0e0b0U1d1f0(250F0F0I0j2H1v2o0x1D0q232T0R2120220k2q0^1Y0x2j2E1$1N1P0:1-2%0U2)0x1}1O1$0C2M1D2R2T2~10281f2/2f2@0F140s0}0G2Q320~312p341.36380}0N3c293e2R2$013j0A39040c3n2S0 3q3h0^3t3v0P3y3p323r3E0}0X3H3A3J3C3s0e373u0}0$3O3f331R3i3T3k040y3Y3B3#3D3%3V040h3H1E2|1v2-2W0k2!3r0j1}2w0%1O1D2{0I2}3d3?3 0(473g3-010T0}0(0m3?3,2:010S0}0w4k3Q4e0x0m0}0t1i0s0f2j0f1N2O0U1e2k0U2M4r4d4m0|040L4K3!4m0x4w4y4Q3r4N0!0Q3O0w4$4q4l354h0U3 3H4(4s4m0e0}0O4.3Z3K0i4+2O4W3R4N0L0!4#4%4_3R4g040m3T4^4)3i0}1=2)5b4:2f0e4o042=5h4L4*044x0H0s4~4e4N4!1w3d064%5C4/5p5d040:0I5v4M0}0K5o4R5q0n3u0I0l0F5O3r4=044@5z3o5E5P5G5f5J5#2S554e5Y0E5K5q271Y0R5=1.505`0^0b2c04010Q0w015}014Y535D5%3r570U4j5,046b3R4T045R1*5U665:666k0U0b0x120I0F4,66504Z696a545c3D0}6m5T5V6g6i5/4?5W6j4{5m0x5_6g5.5L4O6r6I5S6o6W6G670}526g5B6E6X5q4D0e6A0}0W6!5H1*6@040V6Q6O5Z704S6#6n6L2~6.4$6:1.572M0R5U0x736;4,6?6-1v4a463@7p0q3`1v0R3|7u2Y2U1|1~2W0A1)7r3`1B4c5(0^2M0H0f0m0A0T0I0f0J0c0}1n1p1r1t0w5y301I3e1C0d1f1c0,6t1+0k290.1*2K6y0o0#0w7?051o040k0#3 1j0A2O0A0o5+7~0w1r0U0w0C6x2v0R0w0k000A0m0m2N0R6x8i4I8o1o2j8h1*0.6J5U0.2J0(0l0Z0w5R6y7D8x0E060z2=2F0K4q7o6{0I8Q8z0F0w0O7{1V2)0E5@2G0L62646,8S0w1t8h0#8b6J6U0w0u7!1E3e2-3r1:1X1Z1#7I3r2s2j2l0}2y0D0j6y0C8h0M0t231e3?457I2 488S7b6H042D0F2H1u6M9q015Y5!2~6N74045*6p0}5;6(5i5G8(6V306)5|9K5F5~608+659S7J6*046,789y6k5I7i1.9A9+9r9t9v6}6_9Y3r0H0U0}0r6}6 7m6)6k8W9.9z6P9xa00}9:4F0x9w9P9L0^4N9?ad9T019_3a9}3Y0q9p1I3^7s437H0p0s0w7O1c8d15256U2M0w0B2X1+0j6x0*2=8a1s8R409F8#0I8%0C5^8*63018-aR8G0A0w0i0U2j0w7_0x0#2M8X0I0Z848p2v8^8D8F7}0H9s3T9;0q7~9J1L3_0)0+0-04.