Aller au contenu

✂ Fusionner des tables ✂

On considÚre dans ce sujet les trois fichiers csv décrits ci-dessous :

countries.csv contient des informations décrivant les pays :

  • CountryCode : le code du pays (texte, clĂ© primaire)

  • Name : le nom du pays (texte)

  • Continent : le continent du pays (texte)

  • SurfaceArea : la surface du pays (nombre dĂ©cimal)

  • Population : la population du pays (entier)

  • Capital : la capitale du pays (nombre entier correspondant Ă  un ID dans le fichier cities.csv)

  • d'autres descripteurs qui ne nous intĂ©ressent pas ici...

languages.csv contient les informations sur les langues parlées dans chaque pays :

  • CountryCode : le code du pays (texte)

  • Language : la langue concernĂ©e par cette entrĂ©e (texte)

  • IsOfficial : cette langue est-elle officielle dans ce pays ? (texte, T pour True, F pour False)

  • Percentage : le pourcentage de locuteurs dans le pays (nombre dĂ©cimal)

cities.csv contient des informations décrivant des villes :

  • ID : l'identifiant de la ville (entier)

  • Name : le nom de la ville (texte)

  • code : le code du pays dans lequel est situĂ© la ville (texte)

  • District : la rĂ©gion d'appartenance de la ville (texte)

  • Population : la population de la ville (entier)

Import des listes réalisés !

Dans toute la suite du TP, les listes pays, langues et villes contiennent les dictionnaires correspondant aux imports de ces différents fichiers.

Les données sont correctement typées (en particulier les valeurs isOfficial de la liste langues qui sont des booléens).

pays = [
    {"CountryCode": "ABW", "Name": "Aruba", "Continent": "North America", ...},
    {"CountryCode": "AFG", "Name": "Afghanistan", "Continent": "Asia", ...},
    ...
]

langues = [
    {"CountryCode" : "ABW", "Language": "Dutch", "IsOfficial": True, "Percentage": 5.3},
    {"CountryCode" : "ABW", "Language": "English", "IsOfficial": False, "Percentage": 9.5},
    ...
]

villes = [
    {"ID": 1, "Name": "Kabul", "code": "AFG",, "District": "Kabol", "Population": 1780000},
    {"ID": 2, "Name": "Qandahar", "code": "AFG",, "District": "Qandahar", "Population": 237500},
    ...
]
Activité 1 - Quelles sont les langues parlées en Haïti ?
  • Parcourir la liste pays jusqu'Ă  trouver le code de HaĂŻti (orthographiĂ© Haiti dans la liste pays),

  • Parcourir la liste langues et extraire les valeurs correspondant Ă  ce code.

Compléter le code ci-dessous permettant de déterminer les langues parlées en Haïti.

###(DĂ©s-)Active le code aprĂšs la ligne # Tests (insensible Ă  la casse)
(Ctrl+I)
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 : 5/5

.128013rt=7Cflb)H1 ĂȘ2e/vyg.:]8swR9nuph5aS!oq3(LNk_i4+6;PĂ©[cdm0050#0p0c0H0S0h0y0m0!0h0H0y0y0d010c0S0E010406050y0D0$0$0H0b0s040I0K0h0D0{0K0C0m020H0$0E0W0m0A0p150b0L0D0p0y050q12141618100E04051D1w1G0q1D100#0S0r0:0=0@0_0F0S0t0F0h1U0F0c0~050+0i0h0p1P0?0^011T1V1X1V0c1%1)1#0c0b1E0c0F0:1b0y0E0H0C0_0o011+1R010g0-0p0C1j0p1#2123281-2b1)2e0$2g040a0m0X0b0K0E0K0y0S1e1g0)1 0b0b0p0!2B1w2i0C1E0q1}2N1`1|1{1$0#2k0_1X0C2d2y1#1M1O0;1,2X0S2Z0C0K2%1#0E2G1E2L2N2^11221g2)292.0b150h0~0m0l2K2|0 2{2j2~1-3032340o3723392L2W013e0H33040m0M3i2M103l3c0_3o3q0m0T3u3k2|3m3A340G3E3w3G3y3n0K313p340V3L3a2}1Q3d3Q3f3r0e3V3x3Y3z3!3S3r0x3(3N3*3P3R3B0B3:3b3=3I040l0%3E1H2?1w2%2Q0#1|2V3O0!2/2q0(1N1E2=0p2@38414b0)4j3{2*3n0~0S0R0F0,0{3E0m3W3m0K0~0d4y4A3O0$0S0~401x383M4p290Q0~0z1T1)4F3)4q0C0~220s1v4M3j4G3=0}040Z414X2 4s4u4w0S4/3;4q4,0w4.4(2M4*4q0y2604021s0K0c0W0P2f560D580W4_4P1-4|4W4`294C040J4E4 3r5129530~5d5f0k4@5y595h3X4{0~0v3L0m5K4z4:3d4=4v2A4^5s5M5m1-5o0U5r2^5U5i0_4I0~365s064O5F4;044m0p5l5$015o5Z385#5.5O044#4%2`5N0_4,4~625V3z5P4@5E3m4|664k63015w5557590f0K0D0C1`0s6n0)5C5g5s5u5j0~0w3L5-3H0~0=0C0t1t0y4?5R5?5}0_5_6N6d0~0Z6B5+6y0_4R040g3Q6R3O4Z042d1`0p5=5T6X5^0z4s0C6%3|6F236I1u6c3O4,5I5+5L5|3m6Z0S0g6^4Y0~6+2G6.675@656~3=6j6v6n6p6r6t0p6v7i5G046V5!6:5_5`3j746(0~5;7s29705J735L6:6)6G6|6K5Q4x6x6h5o0u7F5~0H0E0E2d0#7W640~0N7%4r6*6q7d7+4,0j3V0q5;2N4h2N451w0c477}2T2O0H1(4i444f1C4o6O012G0$0R0g0H0Q0p4u0M0~1o1q1s1u0m712`1J391D0O0H0m0i6o0;1*055;3m1/1W1Y1!89754S4U7e4k7@4c3r0#230/0=0m2G0!0F0p0b8Z1*0#0D1 2D0#005A5R0m2x0D2F4w0m0H0D0@0S0m0n6,8X1p0E0=0!0Y1*220b0m6p4z8E3O8G1;1Z2h68016Z6#0b418Q4n8_0!4b1k0H0t0C0Y0m2D0h002,0y1`0D2I0S1f9c4c8F1Y9g8J6:6Z0i2G8g9o7^0m1s8}2,0c8#2v1k0c0m8W8z9G1)8q1H392%9M1:8I2;438s2`7^9Q0~9m795/7c6-a15W6=042,a5695 0H4$7:5H7I5K9~a8786/6h6)a38O4)6h7h7S9j7k6l5a5caxaf7uaa5^4D7z2M7B7j546v8/0{7rau7gag727Jaian7D4caD6Qam9jao7.a4aP8aat7f8aaw5e6m6o7.6s4caOa,6SaCaSaTaj9S0p9U6W9p851J430q4510b70*0,0.04.
Activité 2 - Langues parlées dans le monde

Le descripteur CountryCode permet donc de faire le lien entre les deux listes pays et langues, utiliser cette relation afin de déterminer les langues parlées dans un pays quelconque.

Écrire les deux fonctions :

  • code_pays prend en argument la liste des pays ainsi que le nom d'un pays et renvoie son code ;

  • langues_parlees prend en argument les listes des donnĂ©es des pays et celle des langues (arguments pays et langues) ainsi que le nom d'un pays (nom) et renvoie la liste des noms des langues parlĂ©es dans ce pays.

Exemples

>>> code_pays(pays, "Haiti")
"HTI"
>>> langues_parlees(pays, langues, "Haiti")
['French', 'Haiti Creole']

###(DĂ©s-)Active le code aprĂšs la ligne # Tests (insensible Ă  la casse)
(Ctrl+I)
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 : 5/5

.128013ĂŽtClOH12Ă /vygj.]sEw9huqĂčiV6PĂ©[Ndm0r=7fb) e:,8Rnp5(aSo3LĂŻk_Ăź4;cx050G0Q0c0Z0z0e0r0P0.0e0Z0r0r0K010c0z0W010406050r0w0H0H0Z0J0m040!0#0e0w130#0V0P020Z0H0W0-0P0U0Q1d0J0x0w0Q0r050k1a1c1e1g180W04051L1E1O0k1L180G0z0l0{0}0 110v0z0n0v0e1$0v0c16050?0N0e0Q1X0~10011#1%1)1%0c1/1;1-0c0J1M0c0v0{1j0r0W0Z0V110i011?1Z010M0^0Q0V1r0Q1-292b2g1^2j1;2m0H2o040a0P0C0J0#0W0#0r0z1m1o0;270J0J0Q0.2J1E2q0V1M0k252V2224231.0G2s111)0V2l2G1-1U1W0|1@2)0z2+0V0#2/1-0W2O1M2T2V30192a1o2;2h2_0J1d0e160P0h2S3417332r361^383a3c0i3f2b3h2T2(013m0Z3b040P0$3q2U183t3k113w3y0P0,3C3s343u3I3c0X3M3E3O3G3v0#393x3c0B3T3i351Y3l3Y3n3z0L3%3F3*3H3,3!3z0T3:3V3=3X3Z3J0u3{3j3}3Q040h0I423)2=3~3-0h3e1F3g3U434b450h3p4g3r4i4a373@3y0h3B4o3D3(3P4t160h3L4x3N4j4s3 4C3S4F4q4A4J463$4M4z3W4l3/4S3;4k4B463`4X3|4Z4P0h414F1P2~1E2/2Y0G242%3W0.2`2y0:1V1M2}0Q2 3g3M054`0;524H1^0)160;0M3M0P4T440M16560Q0*2a0m1D4-4Y2h15040Y545s3l165o5q325y115u0S5f5h4k162_0H5x4(5t160O0R493u0t3c0P5Y5O59110r0G16021A0#0c0-5*0w5,5.5+5-1w0V0l0#0z1=1;272L0G02030$0u0-0w1o5B5/5;6a5-6c0-3T5Y5Z5E015b040M3Y5I6j0V162l220Q0Q6p5P1^0#5W042@6x5#3v5A0Z5p5!4r1^5u5T4M6h6Q5g6j6l0z5e4F6S6y3H6s0V6u6w5r6Z015u0E6K3u0r2e046e0F2n6e6.3W5u0q6E6L110#160K0K6~3P5L0#5N6)6F6N6g6R7e5J2h6l2O0c0w0J0V754U6#6%6`3}6,7s4b6:5)5?0-0d0#67220m7B0;6_7a6 6+166}4M066Q7g5a160J0@0r6(306Y6F2+160A3x1B0s2N6o7J3u5u5w7-3W7x6=7z0%1=5M0P0V62640-0Z0W2a7U0+0c0P2a0`0G2b0`0}0P1)0r0c0Q7I5D6*5u0O3T064N3W6l5d7o5i160}0V0n1B0r5n1e1;1C7v5Q5v8G5z045B8J5F165H6X7R6!048x8z8F7;7t8P8u5K045M8N7L045S5U3W6B7Q8Y7w5(7@5:6d7z6e5^5`5|8e0Z8e0z8g1=0;0`5M891C8 8y8A878D0D998a0V8c1=5B0P2@1U1A0D9d0J0P0r1n7|786e9y7z7d6i6*6r045l8#2h7104748R6q5k4{8C6J8;8H7:8k7!6H9R9V7K5G9H8K8(9S6M5R8o7Q9N042O1a0e0?0c9$70729^8*0E7N307P6h8S6k166n0J9{9E6t2O7X3g7Z7K6A166D9M9D8w2b8W5C536j7c6P7ead3u6U6W7Ya2a86$aa8)7u9)5$6;6e7B7D1f7G8i9AaE8*9~aca29J73a79O0;aC166O9 as6Ray7T1C0w9=0Z9@aO9J0p8)9E810W2l0GaY8IaOaz7raOaD9Z6/aG7^al0w0Z0naM8^6fb07M8n7O9-6*7i0=7l7nai9W9/a*a,a.9 1E5l2V502V4;1E0c4?bA2#2W0Z1:514:4~1K587K2O0H0*0M0Z0)5m0v0$161w1y1A99a!531R3h1L7BaA0@bO6t0P0j8e000Q0/1x0W5~2L0g0Z0(13870J0D0.0D0;6$0S0P9va^1l9m0.0z0P1l0^920Q9s671=0N7C0|1=554{3u1`1(1*1,bMaua47,320kbv9t8b0P0Z8}9s2O4`7l0`b;0e002@8g0J0w2Q0z9vcs2L3Wcv1|1+2pbi160N2ObS54cE4{040p0P0s1o0Q0M0M0=c85~c!517jblbuc=0P0o7C1=0.1=0J0b1;a;b(bL0f1o902Lb`0w0`0Zd81l9q8d1|2+5g5lcu1*c(cya27i7Vab3rat4U2y7%1k0Q7*2Da6bda|b27=b4bb7_9w0H7|7~65a@1e0Z859d89cHdu928h8jao8l9+4-c;57cI2j2K1=0n0D2O9s1;0`0.0~c90y8e7`78d+0r9q2lcI0J8z2x6$7|da3Y9:2F0V2%b;0ZcW679d5pc@dj0P1C869he4dae62L2j8z2O9tcfcR9v90c{c}2Q0wdt900c5,3x2I9q0G0w9rcN0J0`0Y2L8dcocWd0dyc$dAcxc*6F6la5c:bv0OcG9icIcK0P2O5_0#0me!dc0D9;9?dg1S4:0=0@0_04.
Activité 3 - Quelle est la capitale d'Haïti ?

Pour cela, nous devons :

  • parcourir la liste des pays jusqu'Ă  trouver l'entrĂ©e correspondant Ă  HaĂŻti,

  • repĂ©rer le code de la capitale correspondante,

  • parcourir la liste des villes jusqu'Ă  trouver le code cherchĂ©.

Lien entre les listes pays et villes

Quels sont les descripteurs permettant de faire le lien entre les listes pays et villes ?

  • Le descripteur "Capital" de pays et "Name" de villes
  • Le descripteur "Name" de pays et "Name" de villes
  • Le descripteur "Capital" de pays et "ID" de villes
  • Le descripteur "ID" de pays et "Capital" de villes
  • ❌ Le descripteur "Capital" de pays et "Name" de villes
  • ❌ Le descripteur "Name" de pays et "Name" de villes
  • ✅ Le descripteur "Capital" de pays et "ID" de villes
  • ❌ Le descripteur "ID" de pays et "Capital" de villes

Certains des « pays » listés n'en sont pas vraiment et n'ont donc pas de capitale. C'est par exemple le cas de l'Antarctique.

Lors de l'import des données, on leur a associé la valeur

Associer les capitales aux pays

Ajouter une nouvelle clé CapitalName au dictionnaire du pays dont la valeur sera le nom de la capitale obtenu.

Pas de capitale ?

On utilisera la chaßne vide "" comme valeur pour les « pays » sans capitale (valeur -1 à la clé Capital.).

Ainsi :

  • le dictionnaire correspondant Ă  la France contiendra un nouveau couple "CapitalName": "Paris",

  • celui de l'Antarctique "CapitalName": "".

Compléter le code ci-dessous afin d'ajouter à chaque dictionnaire correspondant à un pays une nouvelle entrée CapitalName contenant le nom de sa capitale.

###(DĂ©s-)Active le code aprĂšs la ligne # Tests (insensible Ă  la casse)
(Ctrl+I)
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 : 5/5

.128013rt=7CflbID1 2e/vyg:-]8Tsw9nuph5aSo3qFNki4+6P;[cdm0050W0o0c0G0O0h0y0m0V0h0G0y0y0d010c0O0D010406050y0C0X0X0G0b0r040H0I0h0C0?0I0B050p0}0 11130{0D04051j1c1m0p1j0{0W0O0q0+0-0/0;0E0O0s0E0h1A0E0c0_050$0i0h0o1v0.0:011z1B1D1B0c1J1L1H0c0b1k0c0E0+160y0D0G0B0;0n011N1x010g0(0o0B0G0X0o1H1*1,1;1P1@1L1`1|0_0a0m0S0b0I0D0I0y0O190B0m0!1(0b0b0o0V2h1c1 0B1k0p1$2u1Z1#1!1I0W210;1D0B1_2e1H1s1u0,1O2E0O2G0B0I2K1H0D2n1k2s2u2Y0|1+2i2M1=2R0b100h0_0m0l2r2$0`2#202(1P2*2,2.0n2;1,2?2s2D012{0G2-040m0J2 2t0{322_0;35370m0P3b312$333h2.0F3l3d3n3f340I2+362.0R3s2@2%1w2`3x2|380e3C3e3F3g3H3z380w3L3u3N3w3y3i0A3T2^3V3p040l0Y3!3E2N3W3I0l2:1d2=3t3#3-3%0l2~3=303@3,2)3P370l3a3}3c3D3o420_0l3k462u2V0o2u2K2x0W1#2C3v0V2S1}1k4j1l2W3D2Z2=054p0!2X3U3-0N0_0g3x3l0m483v0B0_1_1Z0o0o4J4L3V0I0z0_2P4T3M3_0_1+0r0y3l4U3-0^040t3s0m4=4K4#2)0_0V0G0D2g364S4e4@4D1=0I0_0d4!532`4O0B4Q502!4^1P4.0U4+5g0;0y1/04020K0C0I0c0T0f4|4~0h5q5s5u5k590;4.0v4;4?4,1=4F040O0g583^4_044{4}0$1L5Q401P55040d57515K5!0_0u5D5R1P0X0O4b5.5Z5F0_4:4e064?5~525/3g5b5d5@335i653v5n0_5A5t5v5x5W0M1{0o6c5C4e5*5_045H5)5l015#5(2Y605^016a5p5r6d6k0T5I4=6n015M0o0)5e4y6s4.5{2Y5}5 6H6s4N040g0%0c5Y336u6$3v0N0V0_0L360y6N3~6U6V5E344Y6)4V566{3-5;0_3*5|6?6x335M0z1z5X6r6^4W0_2R6#7b616_6Y6!683V6Q6G74754M0_0q0(7a6w6I6(7h6y6X7u0h1L4*6m6P0_5j7H6^6X0O7m4-0_6q6S7q5J6s5M5O6~5S7D7w6O6^677L7i6A6E0j0k6E7P1=5G7Z5+5$6v2=7r3$4`6f4 7;5h5`7p7U6@7i6X4P2n6;2t6I7)5f6^7,6C5u5w5V366h1|7:7*6y7?7A6%6}8t7s047#8b4C7i8e7%7+5o6E8n6j8i6F8q667R84856I6X6Z2g7@0;7z7x7W6,040x0b0C8A6T7U6I6K6M816o6R3?855 8R6`8w6|040Q7`307|6 5=3(3C0p4A4h1n4v0p4t2v4l1c2y9e0G1K979a1t2?9a0#0%0)04.