Union de dictionnaires

Écrire une fonction union qui prend en paramètres deux dictionnaires d1 et d2, dont les valeurs associées aux clés sont des nombres, et qui renvoie un dictionnaire d défini ainsi:

  • les clés de d sont celles de d1 et d2 réunies;
  • la valeur associée à une clé dans le dictionnaire d est la somme de ses valeurs associées dans les dictionnaires d1 et d2 si la clé est présente dans ces deux dictionnaires et sinon la valeur associée dans le dictionnaire où elle est présente.
Exemples
🐍 Console Python
>>> union({1: 4, 2: 3}, {1: 5, 3: 7})
{1: 9, 2: 3, 3: 7}
>>> union({}, {'a': 7, 'b': 5})
{'a': 7, 'b': 5}
>>> union({'a': 7, 'b': 5}, {})
{'a': 7, 'b': 5}
>>> union({'Aya': 15, 'Edith': 12}, {'Edith': 15, 'Aya': 12})
{'Aya': 27, 'Edith': 27}
###(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
.128013fe})6i1p3m_:{Svk-(q5rtg.x=swcd;,èPo/]haR2n bl0+é[948uy7I050E0c0w0N0g0T0B0R0D0T0N0B0B0A010w0g0i010406050B0#0k0k0N0v0$040o0J0T0#0|0J0Q0R020N0k0i0F0R0O0c160v0t0#0c0B050K13151719110i04051E1x1H0K1E110E0g0p0;0?0^0`0M0g0x0M0T1V0M0w0 050,0S0T0c1Q0@0_011U1W1Y1W0w1(1*1$0w0v1F0w0M0;1c0B0i0N0Q0`0P011,1S010b0.0c0Q1k0c1$2224291.2c1*2f0k2h040a0R0I0v0J0i0J0B0g1f1h0*200v0v0c0D2C1x2j0Q1F0K1~2O1{1}1|1%0E2l0`1Y0Q2e2z1$1N1P0=1-2Y0g2!0Q0J2(1$0i2H1F2M2O2_12231h2*2a2/0v160T0 0R0h2L2}102|2k2 1.3133350P38243a2M2X013f0N34040R0j3j2N113m3d0`3p3r0R0Z3v3l2}3n3B350u3F3x3H3z3o0J323q350f3M3b2~1R3e3R3g3s0%3W3y3Z3A3#3T3s0!3)3O3+3Q3S3C0Y3;3c3?3J040h0U3F1I2@1x2(2R0E1}2W3P0D2:2r0)1O1F2?0c2^39424c0*4k3|2+010q0 0*0b423*4r0C354x3=4r0Q0b0 0#0Q0g1g4C4q2a0~040s4M3Y4E4u371y4l4y4O0 0G3F0R3X3I4u3i4X3k4)3P4P0e0m3M0R4^4(4Z3e4u4%4/3?0J0 0A4~4{0`4P0n0d4@4_4 4r4t040b3R544D300 0=0c5i4N1.0J4A042-5o4T5k040E4W2{55014P4?4-3w4_5I4`5j4|5y4S3n4P0X5O3P0Q5l1*5S3?4P0L5v3n5104535G3s5c5x5z5X4r5Q5/5x5m5=1.5Z5a4^5,1.5e5g0v5#5T5V5n5*5K5p0`5r0 5u665}3A4+5^560 5F2_065J5b5C5e0g4w6d5C5U045@6t5L695s2/0w62505s6c2_675w5M0E6h5D6j5{6n6o6z3o4}5*6e6O045R6W6u646N5`6y68015%5)6I6X6v0E4,5B6T5;6#6T6v6x6@6+6)6l6R6J3n5e0c0/656~6K6i046k396m726S6+6;6(0 6!794*6w5W6`6 0 5!6*7a6,526E4U5N7r7w6_7n637p784Y6^7t7z2a5%0V7M6L6?7J7s6Z6N6|7q7F5Y7L5*7f5|6p0 2H0w0#0v0Q7Q6f7B6l1x4n4j437_0K461x0w487~2U2P0N1)7{461D4p7w2H0k0l0b0N0q0c0l0M0j0 1p1r1t1v0R7d4.1K3a1E0(0T0R0$0R0N0R2E2/0k0S2H0#0B8p164J0H2H0:0E000W0D0v0g2H0;0+0w1+5g0Q2J4K0Q0y1I8u040I170R0c0z1q0i1*5F1L4f2)3?1:1X1Z1#893n2n2e2g0 2t0o8T0}0w2u0$1~4L6W4i892`4l7^923P5e4v6N5s4(7C3I4G044I8(7k4Q7W4V9A4$7v7o6=9A4=6Q6:6V6/5C6-7:6Y0n9C7H9A8r2N737G0p3q0c7-9R5 5h9G4:0 4R9u7G6}7T7D4#9R6v9#1*9(9:7!040e9R6a5t7/9,3}9D9~4r5%8*a95x2B1q1wad5_9.0e597$5I6X9*61a67A9=3k9Z6F6ba59O6{6gai7b9X1072ap6b6saA7i6%as7N6B0J6DaO5q6Gaz39aw7A6MaD6YaF7%7g9M7=9?5P7l9Uau2N6X70aX6X9QaT7;9Ia#7Ea,9;7Ya 9 7u716RaI04768J9W6QaH6$a+4.5Ca~bgaB9Va}7#aL7wa_bo9H9A7mb2atb1bj7Ub4a@9P0 7Pa`6U5y7Sby9@7Va#7X7IbJa-04bA3ka(b77+7-aWava*a!7?0K9m7`2O871G040J0#0R0S0g2e8_3a2(3n8~1=1!2i6T942p2r989a0i9c0I9e0M9g2{9i3X9k4.b(7)5y0caKbv2a9s7W9w9ycaclaj9BbMa87Z5:9^bF6;bIa;bh0 9Kan7h7w7jbFbqbB7K04589Lch609_aNbr3Pa36HcNaM5y5AcsaEbccI74aJcUblcWaxa4c.a|cx4!7cc*6nb!bta/bxcDcObS9Ya^7ycAcwc(6YbubPb0bOd1bza2bDc?cC9n9 dbdfcJcVd9a?bTbd6T7577bbcH7gaY5-c~cvc/drbnc!bpd6c:aZc%dcdmc dedlcybRcRdv0 cTd7dFbZ9PaVdjdyb5c|ch6rc.a:5+d$0 6Ca2d%dZb#dGc`dza)bed`dOdTdndS5?d0e4ctd3d:6TcMd#bkc@d{e3a*d/a=dHdtc+9o7*0+bXc?3Wb%4d2Occ7|4g88b.b:b=0Qb@1M1Ob`1Zb|916Xc0962s0R998Uc59d9fbYa;cc2{6WcgdWcicke1cm4BbMcp4Jcre)ct9/c^6LdNdobQ9FdL5-dkeka0a%aod dh5(9R57amd*dB5~dX9+e|5Md/fa6Aayc?e^e7690 ace?7;8g0$ahfq6Y0sa1cL0 0rd(a#ab9Ufsfud{fxf1b6f3bmbLfvbN9Ae9fh7xf5d_fle ehbeejcEdUd}b7dYfe7;fga^d^f+bGefe:fn04fpd96vfG9Afxf4fBfW6NfEdEf|fNfJc{fTcKfvbie_ddfRf46.dI9He~f$fZbkf#d2dV6+aqd.e6fTcYeWeac#5.fDfofF0cftf}fyf:5%1j1l0FfCfvg3fP0 g5gbakfKd+eedDgQd!gdb3ggfkgYf`dqf?6YfSd504bEf:cBg)g,fQfNe9bUchbW7.es7$7@evb)45ez450+0-0/04.