Aller au contenu

Jointure de dictionnaires

Le responsable d'un site web dispose de deux tableaux contenant des informations sur les abonnés du site :

  • le premier tableau contient l'adresse email de chaque abonné ainsi que son identifiant (un nombre entier unique)
  • le second tableau contient l'identifiant de certains abonnés ainsi que leur "pseudo"

Toutes les adresses email et tous les identifiants sont uniques.

Par exemple :

  • le premier tableau
Email ID
alice@fake.com 1
bob@bidon.fr 2
chris@false.uk 3
  • le second tableau :
ID Pseudo
1 alice
2 B0b

Comme on peut le voir, le second tableau ne contient pas nécessairement les informations de tous les abonnés.

Ces tableaux sont codés en Python sous forme de dictionnaires. On aura ainsi :

🐍 Script Python
emails_ids = {'alice@fake.com': 1, 'bob@bidon.fr': 2, 'chris@false.uk': 3}
ids_pseudos = {1: 'alice', 2: 'B0b'}

Le responsable du site vous demande d'associer à chaque adresse email, le pseudo correspondant. Si un abonné n'a pas de pseudo associé, on donnera son adresse email à la place.

Vous devez donc écrire en Python la fonction jointure qui :

  • prend en argument les deux dictionnaires
  • renvoie le dictionnaire dont les clés sont les adresses email des abonnés et les valeurs leur pseudo (ou leur adresse email s'ils n'ont pas renseigné de pseudo).
Exemples
>>> emails_ids = {'alice@fake.com': 1, 'bob@bidon.fr': 2, 'chris@false.uk': 3}
>>> ids_pseudos = {1: 'alice', 2: 'B0b', 3: 'ChristoF'}
>>> jointure(emails_ids, ids_pseudos)
{'alice@fake.com': 'alice', 'bob@bidon.fr': 'B0b', 'chris@false.uk': 'ChristoF'}
>>> emails_ids = {'alice@fake.com': 1, 'bob@bidon.fr': 2, 'chris@false.uk': 3}
>>> ids_pseudos = {1: 'alice', 2: 'B0b'}
>>> jointure(emails_ids, ids_pseudos)
{'alice@fake.com': 'alice', 'bob@bidon.fr': 'B0b', 'chris@false.uk': 'chris@false.uk'}
###(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
.65038.128013.9875s3_8ufvy n7aS1me(P24:jtwi]D[h)6Oo;bcdg/lqAp.rL-,}=k95R{é050N0s0z0o0B0Q0d0l0M0Q0o0d0d0!010z0B0T010406050d0h0r0r0o0V0k040p0J0Q0h0~0J0m0l020o0r0T0K0l0(0s180V0R0h0s0d050P1517191b130T041z1G051J0P1J1L1G130N0B0j0?0^0`0|0F0B0O0F0Q1Z0F0z11050.0L0Q0s1U0_0{011Y1!1$1!0z1,1.1*0z0L0J0N1b1+0V1H0z0F0?1e0d0T0o0m0|0v011:1W010i0:0s0m1m0s1*2b2d2i1=2l1.2o0r2q040b0l0u0V0J0T0J0d0B1h1j0,290V0V0s0M2L1z2s0m1H0P272X0z2524260N2u0|1$0m2n2I1*1R1T0@1;2+0B2-0m211S1*0T2Q1H2V2X32142c1j2?2j2{0V180Q110q2U3612352t381=3a3c110v3g2d3i2V2*013n0o3d040e3r2W133u3l0|3x3z0w3C3t363v3I110%3L3E3N3G3w0J3b3y110H3S3j371V3m3X3o040n3$3F3)3H3+3Z040g3/3U3;3W3Y3z0$3L1I301z2;2!0N2(3v0M212A0+1S1H2 0s313h414a0,4i3k3|0#110,0i413:2@010A110l4u3{4w0m0i110y0J2_0z0h2Q4B4o4w10040t4N3(4D111s0/0;0f0B0N1y1A4j4v2j4Q0Y3L4A4*3m114#0d0f0T0d0s0h0N2I4T3v4Q0G0x3S0l554/4C394W180:4@4_4{4}4%32574O2j0J110!4.3%50110)0Z54565q3V4q040i3X5p4:3H5a4Y5D581=0J4y042_5I5k4;044X5c4!4$4 3V4Q534(3s06565(5j4U595N0,0m0~2l2d0z5P5+5K5n5@3O5G5U4?5X3|4Q0E604V5S5b0Q644+110C5v5)5*3v5z0B4t5#2W6f3V0m4=5.5:0B5=5{3V5L4=0m6u3|6o5-5d4`4|4~6k4n5^0|5Z6d6e5w5E3w5}4Z5e6F5h4)5J6K11636H5x6A6R691=4Q6c6H6m3|5m045o6-6$654?4^6E5g6)6Y046!346P6B4#2n6r6t6#6P6+6M5(6@2j5z0s0;0s6}016L6H5%6N7c726R6D5f6G716X7k6Z7j6B5T68787w7a6?6P6:6=5i7d5R7B6M7L0|5z2Q4K0V6y7G7w7A677s6U3$0P4l4h427)0P451z0z477.2$2Y20222!0o1-7+451F6I3v2Q0r0f0i0o0#0s0f0F0e111r1t1v1x0l5!341M3i1G0I2M0*0L1g1/2c0V0l0^0?0V0*0o2L0l0N000h2M0B2S0B1i2o0B2Q0l0j744A7(664Y7!6|7%4b040l1v0B295/0B2n0N0V0o8u8f2_5B3Y2L0=0d0J0h0F0/0z0*1x0U1I8k048m0l8s4a4L0z0l2n152K1/0Q009a1s7{8B8f0@0*0=0N0h8B8G2L8K8M058R7B4@5 8W4m0U2D198$0d2#0h8H1i0?1/8@5/8-0=0o8*1x4`0=7B9j0l0z8^0=1.9Q200m0m9m8 8j7~0D2d0=0M8`8e0?0_0Y0l9K0j0*0V6i8(8Z1w8u004#2O2Q2b1i0N5=1/1x988E1/9l8B9p4`4a0m2)1R9J9)0/8M0x8Q8X9x5V0d0E7B6,8R0l2_av4m6_6T8V8R9C0p8#8^0B9`9K0o4H8q8-946{0Ja71x2Han5=8B9:aWap9sas1/9vaw7Z6`7t4%aL0laN0l2{0maR1jaT8^0z9d009Ra84`996729171/0j3y4{0V9,1P050F0qaE0N0|0o1g2Q0X8@1f2L110Sbr9M1e1g8I6y8,3V0F0s9R0s0V2,4q0l0F2Q0i0|03bq2#0sbtbBbw9Y2K1.0|0ubK182`98bM110c0a1z0o2Xbl910W8,0r0*274baG4h9c0ra^8X9j9n9rbD9t8f0Tb)0-9X958^9 8t9$290h0Tcja:4m0t9l9`be1.4L0G1zaD8C8E9qaqc99C93cb1ga4bC1$4`8t0o2l2M9M0B1n1$2lbKaWcf4L0=5!bj2;3v1@1#1%1)7 3V2w2n2p112C0p0M9 0T980u0kb}7V344g6I334j8R7P015z4s7j5M4A7D5Q3H4F044H4J4L7idc6J7x4R7z7ray7j4,6z6^4$a?7#dl5r04527O7q8S5UaJ7u3h6.4w7Idu6a045tdD7w5z8:dN7M67ds114-7Wdd6Q5-75a0777K7H5M5Od#dm7Y8Tdrdz6v119,7vd$73b3c2dY4RdC7m7od56h6jd,7X6pd)5;5/dV0|6w5Nc~dJd573dwdH6V3sd57l327n7o55eldqeoe1706Wd}6(d^616bef01dMd:5|6Cdx8Vd|dm62dpd(8%ed5?eF4PeHe46Ne64W7he18h3heuevexdF6SaYep2Wer7yeY5,7Ne`6*e!e9d$eKf0d;eEet7pdS117S4Lej3sdKe{a=ez7mcx8X7*2X7}440-8T04.