[{"data":1,"prerenderedAt":4882},["ShallowReactive",2],{"navigation":3,"\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ffusion-indexation":585,"\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ffusion-indexation__counterpart":2594,"\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ffusion-indexation__slides":3106,"annexes-memo:\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ffusion-indexation":3803,"annexes-slides:\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ffusion-indexation":4254},[4,224,440],{"title":5,"path":6,"stem":7,"children":8},"SNT — Seconde","\u002Fsnt-2nde","0.snt-2nde\u002F0.index",[9,10,14,36,66,92,118,144,162,184,206],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"REVIEW pédagogique — SNT 2nde","\u002Fsnt-2nde\u002Freview","0.snt-2nde\u002FREVIEW",{"title":15,"path":16,"stem":17,"children":18},"Internet","\u002Fsnt-2nde\u002Fsa-internet","0.snt-2nde\u002Fsa-internet\u002F0.index",[19,20,24,28,32],{"title":15,"path":16,"stem":17},{"title":21,"path":22,"stem":23},"Adresses symboliques et DNS","\u002Fsnt-2nde\u002Fsa-internet\u002Fadresses-dns","0.snt-2nde\u002Fsa-internet\u002F1.adresses-dns",{"title":25,"path":26,"stem":27},"Internet et les réseaux physiques","\u002Fsnt-2nde\u002Fsa-internet\u002Freseaux-physiques","0.snt-2nde\u002Fsa-internet\u002F2.reseaux-physiques",{"title":29,"path":30,"stem":31},"Protocoles TCP\u002FIP et routage des paquets","\u002Fsnt-2nde\u002Fsa-internet\u002Ftcp-ip-routage","0.snt-2nde\u002Fsa-internet\u002F3.tcp-ip-routage",{"title":33,"path":34,"stem":35},"Réseaux pair-à-pair","\u002Fsnt-2nde\u002Fsa-internet\u002Fpair-a-pair","0.snt-2nde\u002Fsa-internet\u002F4.pair-a-pair",{"title":37,"path":38,"stem":39,"children":40},"Le Web","\u002Fsnt-2nde\u002Fsb-web","0.snt-2nde\u002Fsb-web\u002F0.index",[41,42,46,50,54,58,62],{"title":37,"path":38,"stem":39},{"title":43,"path":44,"stem":45},"Histoire du Web","\u002Fsnt-2nde\u002Fsb-web\u002Fhistoire-web","0.snt-2nde\u002Fsb-web\u002F1.histoire-web",{"title":47,"path":48,"stem":49},"URL et hypertexte","\u002Fsnt-2nde\u002Fsb-web\u002Furl-hypertexte","0.snt-2nde\u002Fsb-web\u002F2.url-hypertexte",{"title":51,"path":52,"stem":53},"HTML et CSS — le contenu et la présentation","\u002Fsnt-2nde\u002Fsb-web\u002Fhtml-css","0.snt-2nde\u002Fsb-web\u002F3.html-css",{"title":55,"path":56,"stem":57},"Client-serveur et requêtes HTTP","\u002Fsnt-2nde\u002Fsb-web\u002Fclient-serveur-http","0.snt-2nde\u002Fsb-web\u002F4.client-serveur-http",{"title":59,"path":60,"stem":61},"Moteurs de recherche","\u002Fsnt-2nde\u002Fsb-web\u002Fmoteurs-recherche","0.snt-2nde\u002Fsb-web\u002F5.moteurs-recherche",{"title":63,"path":64,"stem":65},"Sécurité du navigateur et notions juridiques","\u002Fsnt-2nde\u002Fsb-web\u002Fsecurite-droits","0.snt-2nde\u002Fsb-web\u002F6.securite-droits",{"title":67,"path":68,"stem":69,"children":70},"Les réseaux sociaux","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F0.index",[71,72,76,80,84,88],{"title":67,"path":68,"stem":69},{"title":73,"path":74,"stem":75},"Panorama des réseaux sociaux","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fpanorama-rs","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F1.panorama-rs",{"title":77,"path":78,"stem":79},"Identité numérique et authentification","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fidentite-numerique","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F2.identite-numerique",{"title":81,"path":82,"stem":83},"Le modèle économique des réseaux sociaux","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fmodele-economique","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F3.modele-economique",{"title":85,"path":86,"stem":87},"Petit monde et graphes","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fpetit-monde-graphes","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F4.petit-monde-graphes",{"title":89,"path":90,"stem":91},"La cyberviolence","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fcyberviolence","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F5.cyberviolence",{"title":93,"path":94,"stem":95,"children":96},"Les données structurées et leur traitement","\u002Fsnt-2nde\u002Fsd-donnees-structurees","0.snt-2nde\u002Fsd-donnees-structurees\u002F0.index",[97,98,102,106,110,114],{"title":93,"path":94,"stem":95},{"title":99,"path":100,"stem":101},"Données et formats","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Fdonnees-formats","0.snt-2nde\u002Fsd-donnees-structurees\u002F1.donnees-formats",{"title":103,"path":104,"stem":105},"Données structurées","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Fdonnees-structurees","0.snt-2nde\u002Fsd-donnees-structurees\u002F2.donnees-structurees",{"title":107,"path":108,"stem":109},"Métadonnées","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Fmetadonnees","0.snt-2nde\u002Fsd-donnees-structurees\u002F3.metadonnees",{"title":111,"path":112,"stem":113},"Traitement de tables","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Ftraitement-tables","0.snt-2nde\u002Fsd-donnees-structurees\u002F4.traitement-tables",{"title":115,"path":116,"stem":117},"Le cloud","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Fcloud","0.snt-2nde\u002Fsd-donnees-structurees\u002F5.cloud",{"title":119,"path":120,"stem":121,"children":122},"Localisation, cartographie et mobilité","\u002Fsnt-2nde\u002Fse-localisation-cartographie","0.snt-2nde\u002Fse-localisation-cartographie\u002F0.index",[123,124,128,132,136,140],{"title":119,"path":120,"stem":121},{"title":125,"path":126,"stem":127},"GPS et Galileo — se situer grâce aux satellites","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Fgps-galileo","0.snt-2nde\u002Fse-localisation-cartographie\u002F1.gps-galileo",{"title":129,"path":130,"stem":131},"Décoder une trame NMEA","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Ftrame-nmea","0.snt-2nde\u002Fse-localisation-cartographie\u002F2.trame-nmea",{"title":133,"path":134,"stem":135},"Cartes numériques — GeoPortail et OpenStreetMap","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Fcartes-numeriques","0.snt-2nde\u002Fse-localisation-cartographie\u002F3.cartes-numeriques",{"title":137,"path":138,"stem":139},"Itinéraires et graphes","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Fitineraires-graphes","0.snt-2nde\u002Fse-localisation-cartographie\u002F4.itineraires-graphes",{"title":141,"path":142,"stem":143},"Confidentialité de la position","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Fconfidentialite-position","0.snt-2nde\u002Fse-localisation-cartographie\u002F5.confidentialite-position",{"title":145,"path":146,"stem":147,"children":148},"Informatique embarquée et objets connectés","\u002Fsnt-2nde\u002Fsf-info-embarquee","0.snt-2nde\u002Fsf-info-embarquee\u002F0.index",[149,150,154,158],{"title":145,"path":146,"stem":147},{"title":151,"path":152,"stem":153},"Systèmes informatiques embarqués","\u002Fsnt-2nde\u002Fsf-info-embarquee\u002Fsystemes-embarques","0.snt-2nde\u002Fsf-info-embarquee\u002F1.systemes-embarques",{"title":155,"path":156,"stem":157},"Capteurs et actionneurs","\u002Fsnt-2nde\u002Fsf-info-embarquee\u002Fcapteurs-actionneurs","0.snt-2nde\u002Fsf-info-embarquee\u002F2.capteurs-actionneurs",{"title":159,"path":160,"stem":161},"IHM et objets connectés","\u002Fsnt-2nde\u002Fsf-info-embarquee\u002Fihm-objet-connecte","0.snt-2nde\u002Fsf-info-embarquee\u002F3.ihm-objet-connecte",{"title":163,"path":164,"stem":165,"children":166},"Photographie numérique","\u002Fsnt-2nde\u002Fsg-photo-numerique","0.snt-2nde\u002Fsg-photo-numerique\u002F0.index",[167,168,172,176,180],{"title":163,"path":164,"stem":165},{"title":169,"path":170,"stem":171},"Photosites, pixels et résolution","\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Fpixels-resolution","0.snt-2nde\u002Fsg-photo-numerique\u002F1.pixels-resolution",{"title":173,"path":174,"stem":175},"Les algorithmes de l'appareil photo","\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Falgorithmes-photo","0.snt-2nde\u002Fsg-photo-numerique\u002F2.algorithmes-photo",{"title":177,"path":178,"stem":179},"Les métadonnées EXIF","\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Fmetadonnees-exif","0.snt-2nde\u002Fsg-photo-numerique\u002F3.metadonnees-exif",{"title":181,"path":182,"stem":183},"Traiter une image en Python","\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Ftraitement-rgb","0.snt-2nde\u002Fsg-photo-numerique\u002F4.traitement-rgb",{"title":185,"path":186,"stem":187,"children":188},"Notions transversales de programmation","\u002Fsnt-2nde\u002Fsh-prog-notions","0.snt-2nde\u002Fsh-prog-notions\u002F0.index",[189,190,194,198,202],{"title":185,"path":186,"stem":187},{"title":191,"path":192,"stem":193},"Séquences d'instructions et variables","\u002Fsnt-2nde\u002Fsh-prog-notions\u002Fsequences-affectations","0.snt-2nde\u002Fsh-prog-notions\u002F1.sequences-affectations",{"title":195,"path":196,"stem":197},"Instructions conditionnelles","\u002Fsnt-2nde\u002Fsh-prog-notions\u002Fconditionnelles","0.snt-2nde\u002Fsh-prog-notions\u002F2.conditionnelles",{"title":199,"path":200,"stem":201},"Boucles bornées et non bornées","\u002Fsnt-2nde\u002Fsh-prog-notions\u002Fboucles","0.snt-2nde\u002Fsh-prog-notions\u002F3.boucles",{"title":203,"path":204,"stem":205},"Définitions et appels de fonctions","\u002Fsnt-2nde\u002Fsh-prog-notions\u002Ffonctions","0.snt-2nde\u002Fsh-prog-notions\u002F4.fonctions",{"title":207,"path":208,"stem":209,"children":210},"Démo des widgets MDC","\u002Fsnt-2nde\u002Fzz-demo-widgets","0.snt-2nde\u002Fzz-demo-widgets\u002F0.index",[211,212,216,220],{"title":207,"path":208,"stem":209},{"title":213,"path":214,"stem":215},"Démo statique — callouts, code, BO, illustration","\u002Fsnt-2nde\u002Fzz-demo-widgets\u002Fstatique","0.snt-2nde\u002Fzz-demo-widgets\u002F1.statique",{"title":217,"path":218,"stem":219},"Démo interactive — self-eval et python-snippet","\u002Fsnt-2nde\u002Fzz-demo-widgets\u002Finteractif","0.snt-2nde\u002Fzz-demo-widgets\u002F2.interactif",{"title":221,"path":222,"stem":223},"Démo · 14 widgets de manipulation NSI","\u002Fsnt-2nde\u002Fzz-demo-widgets\u002Fwidgets-manipulation","0.snt-2nde\u002Fzz-demo-widgets\u002F3.widgets-manipulation",{"title":225,"path":226,"stem":227,"children":228},"NSI — Première","\u002Fnsi-1ere","1.nsi-1ere\u002F0.index",[229,230,234,256,282,304,328,354,380,410],{"title":225,"path":226,"stem":227},{"title":231,"path":232,"stem":233},"Relecture pédagogique — 8 chapitres NSI 1ère (PA → PH)","\u002Fnsi-1ere\u002Freview","1.nsi-1ere\u002FREVIEW",{"title":235,"path":236,"stem":237,"children":238},"Histoire de l'informatique","\u002Fnsi-1ere\u002Fpa-histoire-info","1.nsi-1ere\u002Fpa-histoire-info\u002F0.index",[239,240,244,248,252],{"title":235,"path":236,"stem":237},{"title":241,"path":242,"stem":243},"De la préantiquité aux machines à calculer","\u002Fnsi-1ere\u002Fpa-histoire-info\u002Fpreantiquite-aux-machines","1.nsi-1ere\u002Fpa-histoire-info\u002F1.preantiquite-aux-machines",{"title":245,"path":246,"stem":247},"La machine universelle (1930-1950)","\u002Fnsi-1ere\u002Fpa-histoire-info\u002Fmachine-universelle","1.nsi-1ere\u002Fpa-histoire-info\u002F2.machine-universelle",{"title":249,"path":250,"stem":251},"Les ordinateurs modernes (1947-1990)","\u002Fnsi-1ere\u002Fpa-histoire-info\u002Fordinateurs-modernes","1.nsi-1ere\u002Fpa-histoire-info\u002F3.ordinateurs-modernes",{"title":253,"path":254,"stem":255},"Réseaux, Web et IA (1969 à aujourd'hui)","\u002Fnsi-1ere\u002Fpa-histoire-info\u002Freseaux-et-web","1.nsi-1ere\u002Fpa-histoire-info\u002F4.reseaux-et-web",{"title":257,"path":258,"stem":259,"children":260},"Représentation des données — types et valeurs","\u002Fnsi-1ere\u002Fpb-types-valeurs","1.nsi-1ere\u002Fpb-types-valeurs\u002F0.index",[261,262,266,270,274,278],{"title":257,"path":258,"stem":259},{"title":263,"path":264,"stem":265},"Bases de numération et entiers positifs","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Fbases-entiers-positifs","1.nsi-1ere\u002Fpb-types-valeurs\u002F1.bases-entiers-positifs",{"title":267,"path":268,"stem":269},"Entiers relatifs et complément à deux","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Fentiers-relatifs","1.nsi-1ere\u002Fpb-types-valeurs\u002F2.entiers-relatifs",{"title":271,"path":272,"stem":273},"Nombres flottants et virgule flottante","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Fflottants","1.nsi-1ere\u002Fpb-types-valeurs\u002F3.flottants",{"title":275,"path":276,"stem":277},"Textes et encodages — ASCII, ISO-8859-1, Unicode","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Ftextes-encodages","1.nsi-1ere\u002Fpb-types-valeurs\u002F4.textes-encodages",{"title":279,"path":280,"stem":281},"Valeurs booléennes et opérateurs logiques","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Fbooleens","1.nsi-1ere\u002Fpb-types-valeurs\u002F5.booleens",{"title":283,"path":284,"stem":285,"children":286},"Représentation des données : types construits","\u002Fnsi-1ere\u002Fpc-types-construits","1.nsi-1ere\u002Fpc-types-construits\u002F0.index",[287,288,292,296,300],{"title":283,"path":284,"stem":285},{"title":289,"path":290,"stem":291},"Tableaux et listes","\u002Fnsi-1ere\u002Fpc-types-construits\u002Ftableaux-listes","1.nsi-1ere\u002Fpc-types-construits\u002F1.tableaux-listes",{"title":293,"path":294,"stem":295},"Listes en compréhension","\u002Fnsi-1ere\u002Fpc-types-construits\u002Fcomprehension","1.nsi-1ere\u002Fpc-types-construits\u002F2.comprehension",{"title":297,"path":298,"stem":299},"Tuples et p-uplets nommés","\u002Fnsi-1ere\u002Fpc-types-construits\u002Ftuples","1.nsi-1ere\u002Fpc-types-construits\u002F3.tuples",{"title":301,"path":302,"stem":303},"Dictionnaires","\u002Fnsi-1ere\u002Fpc-types-construits\u002Fdictionnaires","1.nsi-1ere\u002Fpc-types-construits\u002F4.dictionnaires",{"title":305,"path":306,"stem":307,"children":308},"Traitement de données en tables","\u002Fnsi-1ere\u002Fpd-tables-donnees","1.nsi-1ere\u002Fpd-tables-donnees\u002F0.index",[309,310,314,318,322],{"title":305,"path":306,"stem":307},{"title":311,"path":312,"stem":313},"Tables et CSV","\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ftables-csv","1.nsi-1ere\u002Fpd-tables-donnees\u002F1.tables-csv",{"title":315,"path":316,"stem":317},"Recherche et filtrage","\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Frecherche","1.nsi-1ere\u002Fpd-tables-donnees\u002F2.recherche",{"title":319,"path":320,"stem":321},"Trier une table","\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ftri","1.nsi-1ere\u002Fpd-tables-donnees\u002F3.tri",{"title":323,"path":324,"stem":325,"children":326},"Fusion et indexation","\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ffusion-indexation","1.nsi-1ere\u002Fpd-tables-donnees\u002F4.fusion-indexation",[327],{"title":323,"path":324,"stem":325},{"title":329,"path":330,"stem":331,"children":332},"IHM sur le Web","\u002Fnsi-1ere\u002Fpe-ihm-web","1.nsi-1ere\u002Fpe-ihm-web\u002F0.index",[333,334,338,342,346,350],{"title":329,"path":330,"stem":331},{"title":335,"path":336,"stem":337},"HTML et CSS — rappel de structure","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fhtml-css-bases","1.nsi-1ere\u002Fpe-ihm-web\u002F1.html-css-bases",{"title":339,"path":340,"stem":341},"Formulaires HTML","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fformulaires","1.nsi-1ere\u002Fpe-ihm-web\u002F2.formulaires",{"title":343,"path":344,"stem":345},"Événements JavaScript","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fevenements-js","1.nsi-1ere\u002Fpe-ihm-web\u002F3.evenements-js",{"title":347,"path":348,"stem":349},"Manipulation du DOM","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fdom-interaction","1.nsi-1ere\u002Fpe-ihm-web\u002F4.dom-interaction",{"title":351,"path":352,"stem":353},"Client, serveur et HTTP","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fclient-serveur-http","1.nsi-1ere\u002Fpe-ihm-web\u002F5.client-serveur-http",{"title":355,"path":356,"stem":357,"children":358},"Architectures matérielles et systèmes d'exploitation","\u002Fnsi-1ere\u002Fpf-archi-os","1.nsi-1ere\u002Fpf-archi-os\u002F0.index",[359,360,364,368,372,376],{"title":355,"path":356,"stem":357},{"title":361,"path":362,"stem":363},"Le modèle de von Neumann","\u002Fnsi-1ere\u002Fpf-archi-os\u002Fvon-neumann","1.nsi-1ere\u002Fpf-archi-os\u002F1.von-neumann",{"title":365,"path":366,"stem":367},"Périphériques et interface homme-machine","\u002Fnsi-1ere\u002Fpf-archi-os\u002Fperipheriques-ihm","1.nsi-1ere\u002Fpf-archi-os\u002F2.peripheriques-ihm",{"title":369,"path":370,"stem":371},"Les systèmes d'exploitation","\u002Fnsi-1ere\u002Fpf-archi-os\u002Fsystemes-exploitation","1.nsi-1ere\u002Fpf-archi-os\u002F3.systemes-exploitation",{"title":373,"path":374,"stem":375},"Linux et le shell","\u002Fnsi-1ere\u002Fpf-archi-os\u002Flinux-shell","1.nsi-1ere\u002Fpf-archi-os\u002F4.linux-shell",{"title":377,"path":378,"stem":379},"Réseaux et protocoles","\u002Fnsi-1ere\u002Fpf-archi-os\u002Freseaux","1.nsi-1ere\u002Fpf-archi-os\u002F5.reseaux",{"title":381,"path":382,"stem":383,"children":384},"Langages et programmation","\u002Fnsi-1ere\u002Fpg-langages-prog","1.nsi-1ere\u002Fpg-langages-prog\u002F0.index",[385,386,390,394,398,402,406],{"title":381,"path":382,"stem":383},{"title":387,"path":388,"stem":389},"Diversité et unité des langages de programmation","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fdiversite-langages","1.nsi-1ere\u002Fpg-langages-prog\u002F1.diversite-langages",{"title":391,"path":392,"stem":393},"Constructions élémentaires","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fconstructions-elementaires","1.nsi-1ere\u002Fpg-langages-prog\u002F2.constructions-elementaires",{"title":395,"path":396,"stem":397},"Fonctions","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Ffonctions","1.nsi-1ere\u002Fpg-langages-prog\u002F3.fonctions",{"title":399,"path":400,"stem":401},"Spécification d'une fonction","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fspecification","1.nsi-1ere\u002Fpg-langages-prog\u002F4.specification",{"title":403,"path":404,"stem":405},"Mise au point des programmes","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fmise-au-point","1.nsi-1ere\u002Fpg-langages-prog\u002F5.mise-au-point",{"title":407,"path":408,"stem":409},"Utilisation de bibliothèques","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fbibliotheques","1.nsi-1ere\u002Fpg-langages-prog\u002F6.bibliotheques",{"title":411,"path":412,"stem":413,"children":414},"Algorithmique","\u002Fnsi-1ere\u002Fph-algorithmique","1.nsi-1ere\u002Fph-algorithmique\u002F0.index",[415,416,420,424,428,432,436],{"title":411,"path":412,"stem":413},{"title":417,"path":418,"stem":419},"Parcours séquentiel d'un tableau","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fparcours-sequentiel","1.nsi-1ere\u002Fph-algorithmique\u002F1.parcours-sequentiel",{"title":421,"path":422,"stem":423},"Bases de la complexité","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fcomplexite-bases","1.nsi-1ere\u002Fph-algorithmique\u002F2.complexite-bases",{"title":425,"path":426,"stem":427},"Tris par sélection et par insertion","\u002Fnsi-1ere\u002Fph-algorithmique\u002Ftris","1.nsi-1ere\u002Fph-algorithmique\u002F3.tris",{"title":429,"path":430,"stem":431},"Recherche dichotomique","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fdichotomie","1.nsi-1ere\u002Fph-algorithmique\u002F4.dichotomie",{"title":433,"path":434,"stem":435},"Algorithmes gloutons","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fgloutons","1.nsi-1ere\u002Fph-algorithmique\u002F5.gloutons",{"title":437,"path":438,"stem":439},"Les k plus proches voisins (k-NN)","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fknn","1.nsi-1ere\u002Fph-algorithmique\u002F6.knn",{"title":441,"path":442,"stem":443,"children":444},"NSI — Terminale","\u002Fnsi-tale","2.nsi-tale\u002F0.index",[445,446,450,476,498,536,560],{"title":441,"path":442,"stem":443},{"title":447,"path":448,"stem":449},"Review pédagogique — chapitres NSI Terminale (TA, TB, TC, TD, TE)","\u002Fnsi-tale\u002Freview","2.nsi-tale\u002FREVIEW",{"title":451,"path":452,"stem":453,"children":454},"Structures de données","\u002Fnsi-tale\u002Fta-structures-donnees","2.nsi-tale\u002Fta-structures-donnees\u002F0.index",[455,456,460,464,468,472],{"title":451,"path":452,"stem":453},{"title":457,"path":458,"stem":459},"Objet, classe, interface","\u002Fnsi-tale\u002Fta-structures-donnees\u002Finterface-implementation","2.nsi-tale\u002Fta-structures-donnees\u002F1.interface-implementation",{"title":461,"path":462,"stem":463},"Implémenter une structure — l'exemple de la file FIFO","\u002Fnsi-tale\u002Fta-structures-donnees\u002Fimplementer-une-structure","2.nsi-tale\u002Fta-structures-donnees\u002F2.implementer-une-structure",{"title":465,"path":466,"stem":467},"Listes, piles, files, dictionnaires","\u002Fnsi-tale\u002Fta-structures-donnees\u002Flistes-piles-files-dict","2.nsi-tale\u002Fta-structures-donnees\u002F3.listes-piles-files-dict",{"title":469,"path":470,"stem":471},"Arbres binaires","\u002Fnsi-tale\u002Fta-structures-donnees\u002Farbres-binaires","2.nsi-tale\u002Fta-structures-donnees\u002F4.arbres-binaires",{"title":473,"path":474,"stem":475},"Graphes","\u002Fnsi-tale\u002Fta-structures-donnees\u002Fgraphes","2.nsi-tale\u002Fta-structures-donnees\u002F5.graphes",{"title":477,"path":478,"stem":479,"children":480},"Bases de données","\u002Fnsi-tale\u002Ftb-bases-de-donnees","2.nsi-tale\u002Ftb-bases-de-donnees\u002F0.index",[481,482,486,490,494],{"title":477,"path":478,"stem":479},{"title":483,"path":484,"stem":485},"Le modèle relationnel","\u002Fnsi-tale\u002Ftb-bases-de-donnees\u002Fmodele-relationnel","2.nsi-tale\u002Ftb-bases-de-donnees\u002F1.modele-relationnel",{"title":487,"path":488,"stem":489},"Bases de données relationnelles et anomalies de schéma","\u002Fnsi-tale\u002Ftb-bases-de-donnees\u002Fbase-relationnelle","2.nsi-tale\u002Ftb-bases-de-donnees\u002F2.base-relationnelle",{"title":491,"path":492,"stem":493},"Le langage SQL","\u002Fnsi-tale\u002Ftb-bases-de-donnees\u002Fsql","2.nsi-tale\u002Ftb-bases-de-donnees\u002F3.sql",{"title":495,"path":496,"stem":497},"Les systèmes de gestion de bases de données","\u002Fnsi-tale\u002Ftb-bases-de-donnees\u002Fsgbd","2.nsi-tale\u002Ftb-bases-de-donnees\u002F4.sgbd",{"title":499,"path":500,"stem":501,"children":502},"Architectures matérielles, systèmes d'exploitation et réseaux","\u002Fnsi-tale\u002Ftc-archi-os-reseaux","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F0.index",[503,504,508,512,516,520,524,528,532],{"title":499,"path":500,"stem":501},{"title":505,"path":506,"stem":507},"Le système sur puce (SoC)","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fsysteme-sur-puce","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F1.systeme-sur-puce",{"title":509,"path":510,"stem":511},"Processus et ordonnancement par l'OS","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fprocessus-os","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F2.processus-os",{"title":513,"path":514,"stem":515},"L'interblocage (deadlock)","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Finterblocage","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F3.interblocage",{"title":517,"path":518,"stem":519},"Principes du routage","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Froutage-principes","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F4.routage-principes",{"title":521,"path":522,"stem":523},"Protocoles de routage RIP et OSPF","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fprotocoles-rip-ospf","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F5.protocoles-rip-ospf",{"title":525,"path":526,"stem":527},"Chiffrement symétrique","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fchiffrement-symetrique","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F6.chiffrement-symetrique",{"title":529,"path":530,"stem":531},"Chiffrement asymétrique","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fchiffrement-asymetrique","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F7.chiffrement-asymetrique",{"title":533,"path":534,"stem":535},"HTTPS — l'échange de clé symétrique","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fhttps-tls","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F8.https-tls",{"title":381,"path":537,"stem":538,"children":539},"\u002Fnsi-tale\u002Ftd-langages-prog","2.nsi-tale\u002Ftd-langages-prog\u002F0.index",[540,541,544,548,552,556],{"title":381,"path":537,"stem":538},{"title":403,"path":542,"stem":543},"\u002Fnsi-tale\u002Ftd-langages-prog\u002Fmise-au-point","2.nsi-tale\u002Ftd-langages-prog\u002F1.mise-au-point",{"title":545,"path":546,"stem":547},"Modularité","\u002Fnsi-tale\u002Ftd-langages-prog\u002Fmodularite","2.nsi-tale\u002Ftd-langages-prog\u002F2.modularite",{"title":549,"path":550,"stem":551},"Récursivité","\u002Fnsi-tale\u002Ftd-langages-prog\u002Frecursivite","2.nsi-tale\u002Ftd-langages-prog\u002F3.recursivite",{"title":553,"path":554,"stem":555},"Paradigmes de programmation","\u002Fnsi-tale\u002Ftd-langages-prog\u002Fparadigmes","2.nsi-tale\u002Ftd-langages-prog\u002F4.paradigmes",{"title":557,"path":558,"stem":559},"Programme comme donnée — calculabilité et indécidabilité","\u002Fnsi-tale\u002Ftd-langages-prog\u002Fprogramme-comme-donnee","2.nsi-tale\u002Ftd-langages-prog\u002F5.programme-comme-donnee",{"title":411,"path":561,"stem":562,"children":563},"\u002Fnsi-tale\u002Fte-algorithmique","2.nsi-tale\u002Fte-algorithmique\u002F0.index",[564,565,569,573,577,581],{"title":411,"path":561,"stem":562},{"title":566,"path":567,"stem":568},"Algorithmes sur les arbres binaires","\u002Fnsi-tale\u002Fte-algorithmique\u002Farbres-binaires-algos","2.nsi-tale\u002Fte-algorithmique\u002F1.arbres-binaires-algos",{"title":570,"path":571,"stem":572},"Parcours de graphes — DFS, BFS, cycles, chemins","\u002Fnsi-tale\u002Fte-algorithmique\u002Fgraphes-parcours","2.nsi-tale\u002Fte-algorithmique\u002F2.graphes-parcours",{"title":574,"path":575,"stem":576},"Diviser pour régner","\u002Fnsi-tale\u002Fte-algorithmique\u002Fdiviser-pour-regner","2.nsi-tale\u002Fte-algorithmique\u002F3.diviser-pour-regner",{"title":578,"path":579,"stem":580},"Programmation dynamique","\u002Fnsi-tale\u002Fte-algorithmique\u002Fprogrammation-dynamique","2.nsi-tale\u002Fte-algorithmique\u002F4.programmation-dynamique",{"title":582,"path":583,"stem":584},"Recherche textuelle — l'algorithme de Boyer-Moore","\u002Fnsi-tale\u002Fte-algorithmique\u002Frecherche-textuelle","2.nsi-tale\u002Fte-algorithmique\u002F5.recherche-textuelle",{"id":586,"title":323,"bo":587,"body":590,"description":2581,"eval":2582,"extension":2583,"labo":2582,"meta":2584,"navigation":1069,"path":324,"quizzes":2585,"readingTime":670,"seo":2592,"stem":325,"tp":2582,"__hash__":2593},"cours\u002F1.nsi-1ere\u002Fpd-tables-donnees\u002F4.fusion-indexation.md",[588,589],"PD01","PD02",{"type":591,"value":592,"toc":2564},"minimark",[593,598,623,634,644,648,653,656,823,842,846,932,1161,1164,1172,1194,1198,1201,1251,1277,1281,1417,1424,1428,1431,1434,1531,1534,1636,1647,1651,1654,1788,1790,1796,1874,1878,1952,2319,2321,2326,2346,2350,2357,2375,2456,2469,2491,2495,2542,2546,2560],[594,595,597],"h2",{"id":596},"introduction","Introduction",[599,600,601,602,606,607,610,611,614,615,618,619,622],"p",{},"Les opérations vues jusqu'ici travaillaient sur ",[603,604,605],"strong",{},"une seule table",". Mais\ndans la vraie vie, l'information est souvent répartie sur ",[603,608,609],{},"plusieurs","\ntables — une table des élèves, une table des notes, une table des classes —\nqu'il faut ",[603,612,613],{},"croiser"," pour répondre à une question. C'est l'opération de\n",[603,616,617],{},"fusion",", ou ",[603,620,621],{},"jointure",".",[599,624,625,626,629,630,633],{},"L'opération réciproque est l'",[603,627,628],{},"indexation"," : transformer une table (liste\nde lignes) en un ",[603,631,632],{},"dictionnaire"," dont les clés sont les valeurs d'une\ncolonne. Au lieu de parcourir toute la table pour retrouver une ligne, on y\naccède directement.",[599,635,636,637,640,641,643],{},"Ce cours couvre les deux items du programme ",[638,639],"bo-ref",{"code":588}," (fusion) et\n",[638,642],{"code":589}," (indexation par clé).",[594,645,647],{"id":646},"indexer-une-table-par-une-colonne","Indexer une table par une colonne",[649,650,652],"h3",{"id":651},"le-problème","Le problème",[599,654,655],{},"Reprenez la table des élèves :",[657,658,663],"pre",{"className":659,"code":660,"language":661,"meta":662,"style":662},"language-python shiki shiki-themes github-light github-light github-dark","eleves = [\n    {\"nom\": \"Alice\",   \"age\": 16, \"classe\": \"1G2\"},\n    {\"nom\": \"Bob\",     \"age\": 17, \"classe\": \"1G3\"},\n    {\"nom\": \"Chloé\",   \"age\": 16, \"classe\": \"1G2\"},\n    {\"nom\": \"Dimitri\", \"age\": 17, \"classe\": \"1G2\"},\n]\n","python","",[664,665,666,682,724,757,787,817],"code",{"__ignoreMap":662},[667,668,671,675,679],"span",{"class":669,"line":670},"line",1,[667,672,674],{"class":673},"sxrX7","eleves ",[667,676,678],{"class":677},"s8jYJ","=",[667,680,681],{"class":673}," [\n",[667,683,685,688,692,695,698,701,704,706,710,713,716,718,721],{"class":669,"line":684},2,[667,686,687],{"class":673},"    {",[667,689,691],{"class":690},"sIIMD","\"nom\"",[667,693,694],{"class":673},": ",[667,696,697],{"class":690},"\"Alice\"",[667,699,700],{"class":673},",   ",[667,702,703],{"class":690},"\"age\"",[667,705,694],{"class":673},[667,707,709],{"class":708},"sBjJW","16",[667,711,712],{"class":673},", ",[667,714,715],{"class":690},"\"classe\"",[667,717,694],{"class":673},[667,719,720],{"class":690},"\"1G2\"",[667,722,723],{"class":673},"},\n",[667,725,727,729,731,733,736,739,741,743,746,748,750,752,755],{"class":669,"line":726},3,[667,728,687],{"class":673},[667,730,691],{"class":690},[667,732,694],{"class":673},[667,734,735],{"class":690},"\"Bob\"",[667,737,738],{"class":673},",     ",[667,740,703],{"class":690},[667,742,694],{"class":673},[667,744,745],{"class":708},"17",[667,747,712],{"class":673},[667,749,715],{"class":690},[667,751,694],{"class":673},[667,753,754],{"class":690},"\"1G3\"",[667,756,723],{"class":673},[667,758,760,762,764,766,769,771,773,775,777,779,781,783,785],{"class":669,"line":759},4,[667,761,687],{"class":673},[667,763,691],{"class":690},[667,765,694],{"class":673},[667,767,768],{"class":690},"\"Chloé\"",[667,770,700],{"class":673},[667,772,703],{"class":690},[667,774,694],{"class":673},[667,776,709],{"class":708},[667,778,712],{"class":673},[667,780,715],{"class":690},[667,782,694],{"class":673},[667,784,720],{"class":690},[667,786,723],{"class":673},[667,788,790,792,794,796,799,801,803,805,807,809,811,813,815],{"class":669,"line":789},5,[667,791,687],{"class":673},[667,793,691],{"class":690},[667,795,694],{"class":673},[667,797,798],{"class":690},"\"Dimitri\"",[667,800,712],{"class":673},[667,802,703],{"class":690},[667,804,694],{"class":673},[667,806,745],{"class":708},[667,808,712],{"class":673},[667,810,715],{"class":690},[667,812,694],{"class":673},[667,814,720],{"class":690},[667,816,723],{"class":673},[667,818,820],{"class":669,"line":819},6,[667,821,822],{"class":673},"]\n",[599,824,825,826,829,830,833,834,837,838,841],{},"Pour retrouver Chloé, vous savez faire : parcours linéaire avec un ",[664,827,828],{},"break","\n(cours 2). Mais si vous voulez chercher ",[603,831,832],{},"mille fois"," dans une table de\n",[603,835,836],{},"dix mille élèves",", vous ferez ",[603,839,840],{},"dix millions"," de comparaisons. Coûteux.",[649,843,845],{"id":844},"la-solution-un-dictionnaire-clé-ligne","La solution : un dictionnaire {clé → ligne}",[599,847,848,849,851,852,855,856,859,860,931],{},"Un index est un ",[603,850,632],{}," qui associe ",[603,853,854],{},"la valeur d'une colonne\nunique"," à ",[603,857,858],{},"la ligne complète",". Une fois construit, l'accès est en\n",[667,861,864,900],{"className":862},[863],"katex",[667,865,868],{"className":866},[867],"katex-mathml",[869,870,872],"math",{"xmlns":871},"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML",[873,874,875,895],"semantics",{},[876,877,878,883,888,892],"mrow",{},[879,880,882],"mi",{"mathvariant":881},"script","O",[884,885,887],"mo",{"stretchy":886},"false","(",[889,890,891],"mn",{},"1",[884,893,894],{"stretchy":886},")",[896,897,899],"annotation",{"encoding":898},"application\u002Fx-tex","\\mathcal{O}(1)",[667,901,905],{"className":902,"ariaHidden":904},[903],"katex-html","true",[667,906,909,914,920,924,927],{"className":907},[908],"base",[667,910],{"className":911,"style":913},[912],"strut","height:1em;vertical-align:-0.25em;",[667,915,882],{"className":916,"style":919},[917,918],"mord","mathcal","margin-right:0.0278em;",[667,921,887],{"className":922},[923],"mopen",[667,925,891],{"className":926},[917],[667,928,894],{"className":929},[930],"mclose"," — quasi-instantané, quelle que soit la taille de la table.",[933,934,935],"python-snippet",{},[657,936,938],{"className":659,"code":937,"language":661,"meta":662,"style":662},"eleves = [\n    {\"nom\": \"Alice\",   \"age\": 16, \"classe\": \"1G2\"},\n    {\"nom\": \"Bob\",     \"age\": 17, \"classe\": \"1G3\"},\n    {\"nom\": \"Chloé\",   \"age\": 16, \"classe\": \"1G2\"},\n    {\"nom\": \"Dimitri\", \"age\": 17, \"classe\": \"1G2\"},\n]\n\n# Construction de l'index par nom\nindex_par_nom = {}\nfor e in eleves:\n    index_par_nom[e[\"nom\"]] = e\n\n# Accès direct à une ligne par nom\nprint(index_par_nom[\"Chloé\"])\nprint(index_par_nom[\"Dimitri\"][\"classe\"])\n",[664,939,940,948,976,1004,1032,1060,1064,1071,1078,1089,1104,1120,1125,1131,1145],{"__ignoreMap":662},[667,941,942,944,946],{"class":669,"line":670},[667,943,674],{"class":673},[667,945,678],{"class":677},[667,947,681],{"class":673},[667,949,950,952,954,956,958,960,962,964,966,968,970,972,974],{"class":669,"line":684},[667,951,687],{"class":673},[667,953,691],{"class":690},[667,955,694],{"class":673},[667,957,697],{"class":690},[667,959,700],{"class":673},[667,961,703],{"class":690},[667,963,694],{"class":673},[667,965,709],{"class":708},[667,967,712],{"class":673},[667,969,715],{"class":690},[667,971,694],{"class":673},[667,973,720],{"class":690},[667,975,723],{"class":673},[667,977,978,980,982,984,986,988,990,992,994,996,998,1000,1002],{"class":669,"line":726},[667,979,687],{"class":673},[667,981,691],{"class":690},[667,983,694],{"class":673},[667,985,735],{"class":690},[667,987,738],{"class":673},[667,989,703],{"class":690},[667,991,694],{"class":673},[667,993,745],{"class":708},[667,995,712],{"class":673},[667,997,715],{"class":690},[667,999,694],{"class":673},[667,1001,754],{"class":690},[667,1003,723],{"class":673},[667,1005,1006,1008,1010,1012,1014,1016,1018,1020,1022,1024,1026,1028,1030],{"class":669,"line":759},[667,1007,687],{"class":673},[667,1009,691],{"class":690},[667,1011,694],{"class":673},[667,1013,768],{"class":690},[667,1015,700],{"class":673},[667,1017,703],{"class":690},[667,1019,694],{"class":673},[667,1021,709],{"class":708},[667,1023,712],{"class":673},[667,1025,715],{"class":690},[667,1027,694],{"class":673},[667,1029,720],{"class":690},[667,1031,723],{"class":673},[667,1033,1034,1036,1038,1040,1042,1044,1046,1048,1050,1052,1054,1056,1058],{"class":669,"line":789},[667,1035,687],{"class":673},[667,1037,691],{"class":690},[667,1039,694],{"class":673},[667,1041,798],{"class":690},[667,1043,712],{"class":673},[667,1045,703],{"class":690},[667,1047,694],{"class":673},[667,1049,745],{"class":708},[667,1051,712],{"class":673},[667,1053,715],{"class":690},[667,1055,694],{"class":673},[667,1057,720],{"class":690},[667,1059,723],{"class":673},[667,1061,1062],{"class":669,"line":819},[667,1063,822],{"class":673},[667,1065,1067],{"class":669,"line":1066},7,[667,1068,1070],{"emptyLinePlaceholder":1069},true,"\n",[667,1072,1074],{"class":669,"line":1073},8,[667,1075,1077],{"class":1076},"sCsY4","# Construction de l'index par nom\n",[667,1079,1081,1084,1086],{"class":669,"line":1080},9,[667,1082,1083],{"class":673},"index_par_nom ",[667,1085,678],{"class":677},[667,1087,1088],{"class":673}," {}\n",[667,1090,1092,1095,1098,1101],{"class":669,"line":1091},10,[667,1093,1094],{"class":677},"for",[667,1096,1097],{"class":673}," e ",[667,1099,1100],{"class":677},"in",[667,1102,1103],{"class":673}," eleves:\n",[667,1105,1107,1110,1112,1115,1117],{"class":669,"line":1106},11,[667,1108,1109],{"class":673},"    index_par_nom[e[",[667,1111,691],{"class":690},[667,1113,1114],{"class":673},"]] ",[667,1116,678],{"class":677},[667,1118,1119],{"class":673}," e\n",[667,1121,1123],{"class":669,"line":1122},12,[667,1124,1070],{"emptyLinePlaceholder":1069},[667,1126,1128],{"class":669,"line":1127},13,[667,1129,1130],{"class":1076},"# Accès direct à une ligne par nom\n",[667,1132,1134,1137,1140,1142],{"class":669,"line":1133},14,[667,1135,1136],{"class":708},"print",[667,1138,1139],{"class":673},"(index_par_nom[",[667,1141,768],{"class":690},[667,1143,1144],{"class":673},"])\n",[667,1146,1148,1150,1152,1154,1157,1159],{"class":669,"line":1147},15,[667,1149,1136],{"class":708},[667,1151,1139],{"class":673},[667,1153,798],{"class":690},[667,1155,1156],{"class":673},"][",[667,1158,715],{"class":690},[667,1160,1144],{"class":673},[599,1162,1163],{},"Sortie :",[657,1165,1170],{"className":1166,"code":1168,"language":1169,"meta":662},[1167],"language-text","{'nom': 'Chloé', 'age': 16, 'classe': '1G2'}\n1G2\n","text",[664,1171,1168],{"__ignoreMap":662},[1173,1174,1175],"note",{},[599,1176,1177,1178,1181,1182,1185,1186,1189,1190,1193],{},"La colonne choisie comme clé doit avoir des valeurs ",[603,1179,1180],{},"uniques"," — c'est ce\nqu'on appelle une ",[603,1183,1184],{},"clé primaire"," (vocabulaire que vous reverrez en\nTerminale, ",[638,1187],{"code":1188},"TB01",", à propos du modèle relationnel). Si deux\nlignes ont la même valeur, la seconde ",[603,1191,1192],{},"écrase"," la première dans l'index.",[649,1195,1197],{"id":1196},"version-concise-compréhension-de-dictionnaire","Version concise (compréhension de dictionnaire)",[599,1199,1200],{},"Comme pour les listes, Python propose une syntaxe compacte :",[657,1202,1204],{"className":659,"code":1203,"language":661,"meta":662,"style":662},"index_par_nom = {e[\"nom\"]: e for e in eleves}\n\nprint(index_par_nom[\"Alice\"][\"age\"])  # 16\n",[664,1205,1206,1229,1233],{"__ignoreMap":662},[667,1207,1208,1210,1212,1215,1217,1220,1222,1224,1226],{"class":669,"line":670},[667,1209,1083],{"class":673},[667,1211,678],{"class":677},[667,1213,1214],{"class":673}," {e[",[667,1216,691],{"class":690},[667,1218,1219],{"class":673},"]: e ",[667,1221,1094],{"class":677},[667,1223,1097],{"class":673},[667,1225,1100],{"class":677},[667,1227,1228],{"class":673}," eleves}\n",[667,1230,1231],{"class":669,"line":684},[667,1232,1070],{"emptyLinePlaceholder":1069},[667,1234,1235,1237,1239,1241,1243,1245,1248],{"class":669,"line":726},[667,1236,1136],{"class":708},[667,1238,1139],{"class":673},[667,1240,697],{"class":690},[667,1242,1156],{"class":673},[667,1244,703],{"class":690},[667,1246,1247],{"class":673},"])  ",[667,1249,1250],{"class":1076},"# 16\n",[1252,1253,1256,1262],"self-eval-qcm",{"correct":891,"explanation":1254,"slug":1255},"Indexer transforme une recherche linéaire (O(n)) en accès direct par clé (O(1)).","fusion-indexation-c1",[1257,1258,1259],"template",{"v-slot:question":662},[599,1260,1261],{},"Quel est l'avantage principal d'un index par clé ?",[1257,1263,1264],{"v-slot:choices":662},[1265,1266,1267,1271,1274],"ul",{},[1268,1269,1270],"li",{},"Il économise la mémoire",[1268,1272,1273],{},"Il permet un accès en O(1) au lieu de O(n)",[1268,1275,1276],{},"Il trie automatiquement la table",[649,1278,1280],{"id":1279},"index-vs-table-que-choisir","Index vs table : que choisir ?",[1282,1283,1284,1300],"table",{},[1285,1286,1287],"thead",{},[1288,1289,1290,1294,1297],"tr",{},[1291,1292,1293],"th",{},"Structure",[1291,1295,1296],{},"Accès",[1291,1298,1299],{},"Coût",[1301,1302,1303,1361],"tbody",{},[1288,1304,1305,1309,1312],{},[1306,1307,1308],"td",{},"Liste de lignes",[1306,1310,1311],{},"par index numérique ou parcours",[1306,1313,1314,1360],{},[667,1315,1317,1338],{"className":1316},[863],[667,1318,1320],{"className":1319},[867],[869,1321,1322],{"xmlns":871},[873,1323,1324,1335],{},[876,1325,1326,1328,1330,1333],{},[879,1327,882],{"mathvariant":881},[884,1329,887],{"stretchy":886},[879,1331,1332],{},"n",[884,1334,894],{"stretchy":886},[896,1336,1337],{"encoding":898},"\\mathcal{O}(n)",[667,1339,1341],{"className":1340,"ariaHidden":904},[903],[667,1342,1344,1347,1350,1353,1357],{"className":1343},[908],[667,1345],{"className":1346,"style":913},[912],[667,1348,882],{"className":1349,"style":919},[917,918],[667,1351,887],{"className":1352},[923],[667,1354,1332],{"className":1355},[917,1356],"mathnormal",[667,1358,894],{"className":1359},[930]," pour chercher",[1288,1362,1363,1369,1372],{},[1306,1364,1365,1366],{},"Index ",[664,1367,1368],{},"dict",[1306,1370,1371],{},"par clé",[1306,1373,1374,1360],{},[667,1375,1377,1396],{"className":1376},[863],[667,1378,1380],{"className":1379},[867],[869,1381,1382],{"xmlns":871},[873,1383,1384,1394],{},[876,1385,1386,1388,1390,1392],{},[879,1387,882],{"mathvariant":881},[884,1389,887],{"stretchy":886},[889,1391,891],{},[884,1393,894],{"stretchy":886},[896,1395,899],{"encoding":898},[667,1397,1399],{"className":1398,"ariaHidden":904},[903],[667,1400,1402,1405,1408,1411,1414],{"className":1401},[908],[667,1403],{"className":1404,"style":913},[912],[667,1406,882],{"className":1407,"style":919},[917,918],[667,1409,887],{"className":1410},[923],[667,1412,891],{"className":1413},[917],[667,1415,894],{"className":1416},[930],[599,1418,1419,1420,1423],{},"L'index ne remplace pas la table — il la ",[603,1421,1422],{},"complète",". On garde la liste\npour itérer dans l'ordre, on construit un index quand on a besoin de\nrecherches répétées par clé.",[594,1425,1427],{"id":1426},"fusionner-deux-tables-par-clé-commune","Fusionner deux tables par clé commune",[649,1429,652],{"id":1430},"le-problème-1",[599,1432,1433],{},"Vous avez deux tables. La première liste les élèves :",[657,1435,1437],{"className":659,"code":1436,"language":661,"meta":662,"style":662},"eleves = [\n    {\"nom\": \"Alice\",   \"classe\": \"1G2\"},\n    {\"nom\": \"Bob\",     \"classe\": \"1G3\"},\n    {\"nom\": \"Chloé\",   \"classe\": \"1G2\"},\n    {\"nom\": \"Dimitri\", \"classe\": \"1G2\"},\n]\n",[664,1438,1439,1447,1467,1487,1507,1527],{"__ignoreMap":662},[667,1440,1441,1443,1445],{"class":669,"line":670},[667,1442,674],{"class":673},[667,1444,678],{"class":677},[667,1446,681],{"class":673},[667,1448,1449,1451,1453,1455,1457,1459,1461,1463,1465],{"class":669,"line":684},[667,1450,687],{"class":673},[667,1452,691],{"class":690},[667,1454,694],{"class":673},[667,1456,697],{"class":690},[667,1458,700],{"class":673},[667,1460,715],{"class":690},[667,1462,694],{"class":673},[667,1464,720],{"class":690},[667,1466,723],{"class":673},[667,1468,1469,1471,1473,1475,1477,1479,1481,1483,1485],{"class":669,"line":726},[667,1470,687],{"class":673},[667,1472,691],{"class":690},[667,1474,694],{"class":673},[667,1476,735],{"class":690},[667,1478,738],{"class":673},[667,1480,715],{"class":690},[667,1482,694],{"class":673},[667,1484,754],{"class":690},[667,1486,723],{"class":673},[667,1488,1489,1491,1493,1495,1497,1499,1501,1503,1505],{"class":669,"line":759},[667,1490,687],{"class":673},[667,1492,691],{"class":690},[667,1494,694],{"class":673},[667,1496,768],{"class":690},[667,1498,700],{"class":673},[667,1500,715],{"class":690},[667,1502,694],{"class":673},[667,1504,720],{"class":690},[667,1506,723],{"class":673},[667,1508,1509,1511,1513,1515,1517,1519,1521,1523,1525],{"class":669,"line":789},[667,1510,687],{"class":673},[667,1512,691],{"class":690},[667,1514,694],{"class":673},[667,1516,798],{"class":690},[667,1518,712],{"class":673},[667,1520,715],{"class":690},[667,1522,694],{"class":673},[667,1524,720],{"class":690},[667,1526,723],{"class":673},[667,1528,1529],{"class":669,"line":819},[667,1530,822],{"class":673},[599,1532,1533],{},"La seconde liste les notes obtenues à un devoir :",[657,1535,1537],{"className":659,"code":1536,"language":661,"meta":662,"style":662},"notes = [\n    {\"nom\": \"Alice\",   \"note\": 14},\n    {\"nom\": \"Bob\",     \"note\": 11},\n    {\"nom\": \"Chloé\",   \"note\": 17},\n    {\"nom\": \"Dimitri\", \"note\": 9},\n]\n",[664,1538,1539,1548,1570,1591,1611,1632],{"__ignoreMap":662},[667,1540,1541,1544,1546],{"class":669,"line":670},[667,1542,1543],{"class":673},"notes ",[667,1545,678],{"class":677},[667,1547,681],{"class":673},[667,1549,1550,1552,1554,1556,1558,1560,1563,1565,1568],{"class":669,"line":684},[667,1551,687],{"class":673},[667,1553,691],{"class":690},[667,1555,694],{"class":673},[667,1557,697],{"class":690},[667,1559,700],{"class":673},[667,1561,1562],{"class":690},"\"note\"",[667,1564,694],{"class":673},[667,1566,1567],{"class":708},"14",[667,1569,723],{"class":673},[667,1571,1572,1574,1576,1578,1580,1582,1584,1586,1589],{"class":669,"line":726},[667,1573,687],{"class":673},[667,1575,691],{"class":690},[667,1577,694],{"class":673},[667,1579,735],{"class":690},[667,1581,738],{"class":673},[667,1583,1562],{"class":690},[667,1585,694],{"class":673},[667,1587,1588],{"class":708},"11",[667,1590,723],{"class":673},[667,1592,1593,1595,1597,1599,1601,1603,1605,1607,1609],{"class":669,"line":759},[667,1594,687],{"class":673},[667,1596,691],{"class":690},[667,1598,694],{"class":673},[667,1600,768],{"class":690},[667,1602,700],{"class":673},[667,1604,1562],{"class":690},[667,1606,694],{"class":673},[667,1608,745],{"class":708},[667,1610,723],{"class":673},[667,1612,1613,1615,1617,1619,1621,1623,1625,1627,1630],{"class":669,"line":789},[667,1614,687],{"class":673},[667,1616,691],{"class":690},[667,1618,694],{"class":673},[667,1620,798],{"class":690},[667,1622,712],{"class":673},[667,1624,1562],{"class":690},[667,1626,694],{"class":673},[667,1628,1629],{"class":708},"9",[667,1631,723],{"class":673},[667,1633,1634],{"class":669,"line":819},[667,1635,822],{"class":673},[599,1637,1638,1639,1642,1643,1646],{},"Question : produire une ",[603,1640,1641],{},"nouvelle table"," qui réunit nom, classe et note —\nune ligne par élève. C'est une ",[603,1644,1645],{},"fusion par clé commune"," (ici, le nom).",[649,1648,1650],{"id":1649},"solution-naïve-double-boucle","Solution naïve : double boucle",[599,1652,1653],{},"L'approche la plus directe est de comparer chaque ligne de la première table\nà chaque ligne de la seconde :",[657,1655,1657],{"className":659,"code":1656,"language":661,"meta":662,"style":662},"fusion = []\nfor e in eleves:\n    for n in notes:\n        if e[\"nom\"] == n[\"nom\"]:\n            # On crée une ligne combinée\n            ligne = {\"nom\": e[\"nom\"], \"classe\": e[\"classe\"], \"note\": n[\"note\"]}\n            fusion.append(ligne)\n\nfor ligne in fusion:\n    print(ligne)\n",[664,1658,1659,1669,1679,1692,1716,1721,1759,1764,1768,1780],{"__ignoreMap":662},[667,1660,1661,1664,1666],{"class":669,"line":670},[667,1662,1663],{"class":673},"fusion ",[667,1665,678],{"class":677},[667,1667,1668],{"class":673}," []\n",[667,1670,1671,1673,1675,1677],{"class":669,"line":684},[667,1672,1094],{"class":677},[667,1674,1097],{"class":673},[667,1676,1100],{"class":677},[667,1678,1103],{"class":673},[667,1680,1681,1684,1687,1689],{"class":669,"line":726},[667,1682,1683],{"class":677},"    for",[667,1685,1686],{"class":673}," n ",[667,1688,1100],{"class":677},[667,1690,1691],{"class":673}," notes:\n",[667,1693,1694,1697,1700,1702,1705,1708,1711,1713],{"class":669,"line":759},[667,1695,1696],{"class":677},"        if",[667,1698,1699],{"class":673}," e[",[667,1701,691],{"class":690},[667,1703,1704],{"class":673},"] ",[667,1706,1707],{"class":677},"==",[667,1709,1710],{"class":673}," n[",[667,1712,691],{"class":690},[667,1714,1715],{"class":673},"]:\n",[667,1717,1718],{"class":669,"line":789},[667,1719,1720],{"class":1076},"            # On crée une ligne combinée\n",[667,1722,1723,1726,1728,1731,1733,1736,1738,1741,1743,1745,1747,1749,1751,1754,1756],{"class":669,"line":819},[667,1724,1725],{"class":673},"            ligne ",[667,1727,678],{"class":677},[667,1729,1730],{"class":673}," {",[667,1732,691],{"class":690},[667,1734,1735],{"class":673},": e[",[667,1737,691],{"class":690},[667,1739,1740],{"class":673},"], ",[667,1742,715],{"class":690},[667,1744,1735],{"class":673},[667,1746,715],{"class":690},[667,1748,1740],{"class":673},[667,1750,1562],{"class":690},[667,1752,1753],{"class":673},": n[",[667,1755,1562],{"class":690},[667,1757,1758],{"class":673},"]}\n",[667,1760,1761],{"class":669,"line":1066},[667,1762,1763],{"class":673},"            fusion.append(ligne)\n",[667,1765,1766],{"class":669,"line":1073},[667,1767,1070],{"emptyLinePlaceholder":1069},[667,1769,1770,1772,1775,1777],{"class":669,"line":1080},[667,1771,1094],{"class":677},[667,1773,1774],{"class":673}," ligne ",[667,1776,1100],{"class":677},[667,1778,1779],{"class":673}," fusion:\n",[667,1781,1782,1785],{"class":669,"line":1091},[667,1783,1784],{"class":708},"    print",[667,1786,1787],{"class":673},"(ligne)\n",[599,1789,1163],{},[657,1791,1794],{"className":1792,"code":1793,"language":1169,"meta":662},[1167],"{'nom': 'Alice', 'classe': '1G2', 'note': 14}\n{'nom': 'Bob', 'classe': '1G3', 'note': 11}\n{'nom': 'Chloé', 'classe': '1G2', 'note': 17}\n{'nom': 'Dimitri', 'classe': '1G2', 'note': 9}\n",[664,1795,1793],{"__ignoreMap":662},[1797,1798,1799],"warning",{},[599,1800,1801,1802,1873],{},"Cette méthode a une complexité ",[667,1803,1805,1831],{"className":1804},[863],[667,1806,1808],{"className":1807},[867],[869,1809,1810],{"xmlns":871},[873,1811,1812,1828],{},[876,1813,1814,1816,1818,1820,1823,1826],{},[879,1815,882],{"mathvariant":881},[884,1817,887],{"stretchy":886},[879,1819,1332],{},[884,1821,1822],{},"×",[879,1824,1825],{},"m",[884,1827,894],{"stretchy":886},[896,1829,1830],{"encoding":898},"\\mathcal{O}(n \\times m)",[667,1832,1834,1861],{"className":1833,"ariaHidden":904},[903],[667,1835,1837,1840,1843,1846,1849,1854,1858],{"className":1836},[908],[667,1838],{"className":1839,"style":913},[912],[667,1841,882],{"className":1842,"style":919},[917,918],[667,1844,887],{"className":1845},[923],[667,1847,1332],{"className":1848},[917,1356],[667,1850],{"className":1851,"style":1853},[1852],"mspace","margin-right:0.2222em;",[667,1855,1822],{"className":1856},[1857],"mbin",[667,1859],{"className":1860,"style":1853},[1852],[667,1862,1864,1867,1870],{"className":1863},[908],[667,1865],{"className":1866,"style":913},[912],[667,1868,1825],{"className":1869},[917,1356],[667,1871,894],{"className":1872},[930]," — si chaque table\na 1 000 lignes, c'est un million de comparaisons. Acceptable pour de\npetites tables, vite catastrophique sinon.",[649,1875,1877],{"id":1876},"solution-efficace-indexer-puis-fusionner","Solution efficace : indexer puis fusionner",[599,1879,1880,1881,1884,1885,622],{},"L'idée : ",[603,1882,1883],{},"indexer"," la seconde table par la clé commune, puis parcourir la\npremière en consultant l'index. La complexité tombe à ",[667,1886,1888,1913],{"className":1887},[863],[667,1889,1891],{"className":1890},[867],[869,1892,1893],{"xmlns":871},[873,1894,1895,1910],{},[876,1896,1897,1899,1901,1903,1906,1908],{},[879,1898,882],{"mathvariant":881},[884,1900,887],{"stretchy":886},[879,1902,1332],{},[884,1904,1905],{},"+",[879,1907,1825],{},[884,1909,894],{"stretchy":886},[896,1911,1912],{"encoding":898},"\\mathcal{O}(n + m)",[667,1914,1916,1940],{"className":1915,"ariaHidden":904},[903],[667,1917,1919,1922,1925,1928,1931,1934,1937],{"className":1918},[908],[667,1920],{"className":1921,"style":913},[912],[667,1923,882],{"className":1924,"style":919},[917,918],[667,1926,887],{"className":1927},[923],[667,1929,1332],{"className":1930},[917,1356],[667,1932],{"className":1933,"style":1853},[1852],[667,1935,1905],{"className":1936},[1857],[667,1938],{"className":1939,"style":1853},[1852],[667,1941,1943,1946,1949],{"className":1942},[908],[667,1944],{"className":1945,"style":913},[912],[667,1947,1825],{"className":1948},[917,1356],[667,1950,894],{"className":1951},[930],[933,1953,1954],{},[657,1955,1957],{"className":659,"code":1956,"language":661,"meta":662,"style":662},"eleves = [\n    {\"nom\": \"Alice\",   \"classe\": \"1G2\"},\n    {\"nom\": \"Bob\",     \"classe\": \"1G3\"},\n    {\"nom\": \"Chloé\",   \"classe\": \"1G2\"},\n    {\"nom\": \"Dimitri\", \"classe\": \"1G2\"},\n]\n\nnotes = [\n    {\"nom\": \"Alice\",   \"note\": 14},\n    {\"nom\": \"Bob\",     \"note\": 11},\n    {\"nom\": \"Chloé\",   \"note\": 17},\n    {\"nom\": \"Dimitri\", \"note\": 9},\n]\n\n# 1. Indexer les notes par nom\nindex_notes = {n[\"nom\"]: n[\"note\"] for n in notes}\n\n# 2. Parcourir les élèves et chercher la note dans l'index\nfusion = []\nfor e in eleves:\n    if e[\"nom\"] in index_notes:\n        ligne = {\n            \"nom\":    e[\"nom\"],\n            \"classe\": e[\"classe\"],\n            \"note\":   index_notes[e[\"nom\"]],\n        }\n        fusion.append(ligne)\n\nfor ligne in fusion:\n    print(ligne)\n",[664,1958,1959,1967,1987,2007,2027,2047,2051,2055,2063,2083,2103,2123,2143,2147,2151,2156,2185,2190,2196,2205,2216,2233,2244,2258,2270,2284,2290,2296,2301,2312],{"__ignoreMap":662},[667,1960,1961,1963,1965],{"class":669,"line":670},[667,1962,674],{"class":673},[667,1964,678],{"class":677},[667,1966,681],{"class":673},[667,1968,1969,1971,1973,1975,1977,1979,1981,1983,1985],{"class":669,"line":684},[667,1970,687],{"class":673},[667,1972,691],{"class":690},[667,1974,694],{"class":673},[667,1976,697],{"class":690},[667,1978,700],{"class":673},[667,1980,715],{"class":690},[667,1982,694],{"class":673},[667,1984,720],{"class":690},[667,1986,723],{"class":673},[667,1988,1989,1991,1993,1995,1997,1999,2001,2003,2005],{"class":669,"line":726},[667,1990,687],{"class":673},[667,1992,691],{"class":690},[667,1994,694],{"class":673},[667,1996,735],{"class":690},[667,1998,738],{"class":673},[667,2000,715],{"class":690},[667,2002,694],{"class":673},[667,2004,754],{"class":690},[667,2006,723],{"class":673},[667,2008,2009,2011,2013,2015,2017,2019,2021,2023,2025],{"class":669,"line":759},[667,2010,687],{"class":673},[667,2012,691],{"class":690},[667,2014,694],{"class":673},[667,2016,768],{"class":690},[667,2018,700],{"class":673},[667,2020,715],{"class":690},[667,2022,694],{"class":673},[667,2024,720],{"class":690},[667,2026,723],{"class":673},[667,2028,2029,2031,2033,2035,2037,2039,2041,2043,2045],{"class":669,"line":789},[667,2030,687],{"class":673},[667,2032,691],{"class":690},[667,2034,694],{"class":673},[667,2036,798],{"class":690},[667,2038,712],{"class":673},[667,2040,715],{"class":690},[667,2042,694],{"class":673},[667,2044,720],{"class":690},[667,2046,723],{"class":673},[667,2048,2049],{"class":669,"line":819},[667,2050,822],{"class":673},[667,2052,2053],{"class":669,"line":1066},[667,2054,1070],{"emptyLinePlaceholder":1069},[667,2056,2057,2059,2061],{"class":669,"line":1073},[667,2058,1543],{"class":673},[667,2060,678],{"class":677},[667,2062,681],{"class":673},[667,2064,2065,2067,2069,2071,2073,2075,2077,2079,2081],{"class":669,"line":1080},[667,2066,687],{"class":673},[667,2068,691],{"class":690},[667,2070,694],{"class":673},[667,2072,697],{"class":690},[667,2074,700],{"class":673},[667,2076,1562],{"class":690},[667,2078,694],{"class":673},[667,2080,1567],{"class":708},[667,2082,723],{"class":673},[667,2084,2085,2087,2089,2091,2093,2095,2097,2099,2101],{"class":669,"line":1091},[667,2086,687],{"class":673},[667,2088,691],{"class":690},[667,2090,694],{"class":673},[667,2092,735],{"class":690},[667,2094,738],{"class":673},[667,2096,1562],{"class":690},[667,2098,694],{"class":673},[667,2100,1588],{"class":708},[667,2102,723],{"class":673},[667,2104,2105,2107,2109,2111,2113,2115,2117,2119,2121],{"class":669,"line":1106},[667,2106,687],{"class":673},[667,2108,691],{"class":690},[667,2110,694],{"class":673},[667,2112,768],{"class":690},[667,2114,700],{"class":673},[667,2116,1562],{"class":690},[667,2118,694],{"class":673},[667,2120,745],{"class":708},[667,2122,723],{"class":673},[667,2124,2125,2127,2129,2131,2133,2135,2137,2139,2141],{"class":669,"line":1122},[667,2126,687],{"class":673},[667,2128,691],{"class":690},[667,2130,694],{"class":673},[667,2132,798],{"class":690},[667,2134,712],{"class":673},[667,2136,1562],{"class":690},[667,2138,694],{"class":673},[667,2140,1629],{"class":708},[667,2142,723],{"class":673},[667,2144,2145],{"class":669,"line":1127},[667,2146,822],{"class":673},[667,2148,2149],{"class":669,"line":1133},[667,2150,1070],{"emptyLinePlaceholder":1069},[667,2152,2153],{"class":669,"line":1147},[667,2154,2155],{"class":1076},"# 1. Indexer les notes par nom\n",[667,2157,2159,2162,2164,2167,2169,2172,2174,2176,2178,2180,2182],{"class":669,"line":2158},16,[667,2160,2161],{"class":673},"index_notes ",[667,2163,678],{"class":677},[667,2165,2166],{"class":673}," {n[",[667,2168,691],{"class":690},[667,2170,2171],{"class":673},"]: n[",[667,2173,1562],{"class":690},[667,2175,1704],{"class":673},[667,2177,1094],{"class":677},[667,2179,1686],{"class":673},[667,2181,1100],{"class":677},[667,2183,2184],{"class":673}," notes}\n",[667,2186,2188],{"class":669,"line":2187},17,[667,2189,1070],{"emptyLinePlaceholder":1069},[667,2191,2193],{"class":669,"line":2192},18,[667,2194,2195],{"class":1076},"# 2. Parcourir les élèves et chercher la note dans l'index\n",[667,2197,2199,2201,2203],{"class":669,"line":2198},19,[667,2200,1663],{"class":673},[667,2202,678],{"class":677},[667,2204,1668],{"class":673},[667,2206,2208,2210,2212,2214],{"class":669,"line":2207},20,[667,2209,1094],{"class":677},[667,2211,1097],{"class":673},[667,2213,1100],{"class":677},[667,2215,1103],{"class":673},[667,2217,2219,2222,2224,2226,2228,2230],{"class":669,"line":2218},21,[667,2220,2221],{"class":677},"    if",[667,2223,1699],{"class":673},[667,2225,691],{"class":690},[667,2227,1704],{"class":673},[667,2229,1100],{"class":677},[667,2231,2232],{"class":673}," index_notes:\n",[667,2234,2236,2239,2241],{"class":669,"line":2235},22,[667,2237,2238],{"class":673},"        ligne ",[667,2240,678],{"class":677},[667,2242,2243],{"class":673}," {\n",[667,2245,2247,2250,2253,2255],{"class":669,"line":2246},23,[667,2248,2249],{"class":690},"            \"nom\"",[667,2251,2252],{"class":673},":    e[",[667,2254,691],{"class":690},[667,2256,2257],{"class":673},"],\n",[667,2259,2261,2264,2266,2268],{"class":669,"line":2260},24,[667,2262,2263],{"class":690},"            \"classe\"",[667,2265,1735],{"class":673},[667,2267,715],{"class":690},[667,2269,2257],{"class":673},[667,2271,2273,2276,2279,2281],{"class":669,"line":2272},25,[667,2274,2275],{"class":690},"            \"note\"",[667,2277,2278],{"class":673},":   index_notes[e[",[667,2280,691],{"class":690},[667,2282,2283],{"class":673},"]],\n",[667,2285,2287],{"class":669,"line":2286},26,[667,2288,2289],{"class":673},"        }\n",[667,2291,2293],{"class":669,"line":2292},27,[667,2294,2295],{"class":673},"        fusion.append(ligne)\n",[667,2297,2299],{"class":669,"line":2298},28,[667,2300,1070],{"emptyLinePlaceholder":1069},[667,2302,2304,2306,2308,2310],{"class":669,"line":2303},29,[667,2305,1094],{"class":677},[667,2307,1774],{"class":673},[667,2309,1100],{"class":677},[667,2311,1779],{"class":673},[667,2313,2315,2317],{"class":669,"line":2314},30,[667,2316,1784],{"class":708},[667,2318,1787],{"class":673},[599,2320,1163],{},[657,2322,2324],{"className":2323,"code":1793,"language":1169,"meta":662},[1167],[664,2325,1793],{"__ignoreMap":662},[2327,2328,2329],"tip",{},[599,2330,2331,2334,2335,2338,2339,2342,2343,2345],{},[603,2332,2333],{},"Domaine de valeurs partagé"," : la fusion par clé commune n'a de sens que\nsi les deux tables emploient le ",[603,2336,2337],{},"même domaine"," pour cette colonne. Ici,\nles noms sont écrits identiquement dans les deux tables. Une orthographe\ndivergente (",[664,2340,2341],{},"\"Chloe\""," vs ",[664,2344,768],{},") casserait la jointure.",[594,2347,2349],{"id":2348},"gérer-les-lignes-orphelines","Gérer les lignes orphelines",[599,2351,2352,2353,2356],{},"Que faire si un élève n'a pas de note (absent au devoir) ? Le test\n",[664,2354,2355],{},"if e[\"nom\"] in index_notes"," filtre les non-correspondances. Vous pouvez\nchoisir :",[1265,2358,2359,2365],{},[1268,2360,2361,2364],{},[603,2362,2363],{},"Jointure interne"," : ignorer les orphelins (ce qu'on fait au-dessus).",[1268,2366,2367,2370,2371,2374],{},[603,2368,2369],{},"Jointure externe gauche"," : conserver tous les élèves, marquer la note\ncomme ",[664,2372,2373],{},"None"," quand elle manque.",[657,2376,2378],{"className":659,"code":2377,"language":661,"meta":662,"style":662},"fusion_externe = []\nfor e in eleves:\n    ligne = {\n        \"nom\":    e[\"nom\"],\n        \"classe\": e[\"classe\"],\n        \"note\":   index_notes.get(e[\"nom\"]),  # None si absent\n    }\n    fusion_externe.append(ligne)\n",[664,2379,2380,2389,2399,2408,2419,2430,2446,2451],{"__ignoreMap":662},[667,2381,2382,2385,2387],{"class":669,"line":670},[667,2383,2384],{"class":673},"fusion_externe ",[667,2386,678],{"class":677},[667,2388,1668],{"class":673},[667,2390,2391,2393,2395,2397],{"class":669,"line":684},[667,2392,1094],{"class":677},[667,2394,1097],{"class":673},[667,2396,1100],{"class":677},[667,2398,1103],{"class":673},[667,2400,2401,2404,2406],{"class":669,"line":726},[667,2402,2403],{"class":673},"    ligne ",[667,2405,678],{"class":677},[667,2407,2243],{"class":673},[667,2409,2410,2413,2415,2417],{"class":669,"line":759},[667,2411,2412],{"class":690},"        \"nom\"",[667,2414,2252],{"class":673},[667,2416,691],{"class":690},[667,2418,2257],{"class":673},[667,2420,2421,2424,2426,2428],{"class":669,"line":789},[667,2422,2423],{"class":690},"        \"classe\"",[667,2425,1735],{"class":673},[667,2427,715],{"class":690},[667,2429,2257],{"class":673},[667,2431,2432,2435,2438,2440,2443],{"class":669,"line":819},[667,2433,2434],{"class":690},"        \"note\"",[667,2436,2437],{"class":673},":   index_notes.get(e[",[667,2439,691],{"class":690},[667,2441,2442],{"class":673},"]),  ",[667,2444,2445],{"class":1076},"# None si absent\n",[667,2447,2448],{"class":669,"line":1066},[667,2449,2450],{"class":673},"    }\n",[667,2452,2453],{"class":669,"line":1073},[667,2454,2455],{"class":673},"    fusion_externe.append(ligne)\n",[599,2457,2458,2459,2462,2463,2465,2466,622],{},"La méthode ",[664,2460,2461],{},"dict.get(cle)"," renvoie ",[664,2464,2373],{}," si la clé n'existe pas, au lieu\nde lever ",[664,2467,2468],{},"KeyError",[1252,2470,2473,2478],{"correct":891,"explanation":2471,"slug":2472},"L'indexation permet de remplacer une double boucle par un accès O(1) à la 2e table.","fusion-indexation-c2",[1257,2474,2475],{"v-slot:question":662},[599,2476,2477],{},"Pourquoi indexer la 2e table avant la fusion ?",[1257,2479,2480],{"v-slot:choices":662},[1265,2481,2482,2485,2488],{},[1268,2483,2484],{},"Pour gagner de la mémoire",[1268,2486,2487],{},"Pour passer de O(n×m) à O(n+m)",[1268,2489,2490],{},"Parce que sorted() le demande",[594,2492,2494],{"id":2493},"cas-particuliers-et-pièges","Cas particuliers et pièges",[1265,2496,2497,2506,2516,2533],{},[1268,2498,2499,2502,2503,622],{},[603,2500,2501],{},"Clés non uniques"," : si deux lignes de la table indexée ont la même clé,\nl'index n'en garde qu'une. Si c'est gênant, construire un index\n",[664,2504,2505],{},"{cle: [liste de lignes]}",[1268,2507,2508,2511,2512,2515],{},[603,2509,2510],{},"Types de clé"," : la clé de l'index doit être ",[603,2513,2514],{},"hashable"," — les chaînes,\nentiers, tuples le sont ; les listes et dictionnaires ne le sont pas.",[1268,2517,2518,2521,2522,2524,2525,2528,2529,2532],{},[603,2519,2520],{},"Casse et espaces"," : ",[664,2523,697],{}," et ",[664,2526,2527],{},"\"alice \""," sont deux clés\ndifférentes. Normaliser (",[664,2530,2531],{},".strip().lower()",") avant l'indexation.",[1268,2534,2535,2538,2539,622],{},[603,2536,2537],{},"Fusion sur plusieurs colonnes"," : utiliser un tuple comme clé.\n",[664,2540,2541],{},"index = {(e[\"nom\"], e[\"classe\"]): e for e in eleves}",[594,2543,2545],{"id":2544},"pour-aller-plus-loin","Pour aller plus loin",[599,2547,2548,2549,2551,2552,2555,2556,2559],{},"Vous reverrez ces opérations dans le chapitre Bases de données\n(",[638,2550],{"code":588}," est l'ancêtre direct de la ",[603,2553,2554],{},"jointure SQL"," que vous\nétudierez en Terminale). En attendant, vous avez tous les outils pour faire\nde l'analyse de données en Python vanilla sans ",[664,2557,2558],{},"pandas"," — lecture CSV,\nfiltrage, tri, fusion, indexation.",[2561,2562,2563],"style",{},"html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":662,"searchDepth":684,"depth":684,"links":2565},[2566,2567,2573,2578,2579,2580],{"id":596,"depth":684,"text":597},{"id":646,"depth":684,"text":647,"children":2568},[2569,2570,2571,2572],{"id":651,"depth":726,"text":652},{"id":844,"depth":726,"text":845},{"id":1196,"depth":726,"text":1197},{"id":1279,"depth":726,"text":1280},{"id":1426,"depth":684,"text":1427,"children":2574},[2575,2576,2577],{"id":1430,"depth":726,"text":652},{"id":1649,"depth":726,"text":1650},{"id":1876,"depth":726,"text":1877},{"id":2348,"depth":684,"text":2349},{"id":2493,"depth":684,"text":2494},{"id":2544,"depth":684,"text":2545},"Combiner deux tables par clé commune, indexer une table par dictionnaire pour des accès rapides.",null,"md",{},[2586,2590],{"slug":1255,"kind":2587,"question":1261,"choices":2588,"correct":891,"multi":2589,"explanation":1254},"qcm",[1270,1273,1276],false,{"slug":2472,"kind":2587,"question":2477,"choices":2591,"correct":891,"multi":2589,"explanation":2471},[2484,2487,2490],{"title":323,"description":2581},"YdDUKJlpyXuFQI-zcOeyn6LmSfHkpRsY4VSEv7AJjws",{"id":2595,"title":2596,"bo":2597,"body":2598,"description":3099,"eval":2582,"extension":2583,"labo":2582,"meta":3100,"navigation":2589,"path":3101,"quizzes":3102,"readingTime":670,"seo":3103,"stem":3104,"tp":2582,"__hash__":3105},"coursMemo\u002F1.nsi-1ere\u002Fpd-tables-donnees\u002F4.fusion-indexation.memo.md","Fusion et indexation — l'essentiel",[588,589],{"type":591,"value":2599,"toc":3092},[2600,2604,2791,2795,2825,2829,2883,2887,2910,2914,3089],[594,2601,2603],{"id":2602},"en-une-phrase","En une phrase",[599,2605,2606,2612,2613,2656,2657,2660,2661,855,2726,622],{},[603,2607,2608,2609],{},"Indexer = ",[664,2610,2611],{},"{e[\"cle\"]: e for e in table}"," pour des accès en\n",[667,2614,2616,2635],{"className":2615},[863],[667,2617,2619],{"className":2618},[867],[869,2620,2621],{"xmlns":871},[873,2622,2623,2633],{},[876,2624,2625,2627,2629,2631],{},[879,2626,882],{"mathvariant":881},[884,2628,887],{"stretchy":886},[889,2630,891],{},[884,2632,894],{"stretchy":886},[896,2634,899],{"encoding":898},[667,2636,2638],{"className":2637,"ariaHidden":904},[903],[667,2639,2641,2644,2647,2650,2653],{"className":2640},[908],[667,2642],{"className":2643,"style":913},[912],[667,2645,882],{"className":2646,"style":919},[917,918],[667,2648,887],{"className":2649},[923],[667,2651,891],{"className":2652},[917],[667,2654,894],{"className":2655},[930]," ; ",[603,2658,2659],{},"fusionner = indexer puis parcourir"," pour passer de\n",[667,2662,2664,2687],{"className":2663},[863],[667,2665,2667],{"className":2666},[867],[869,2668,2669],{"xmlns":871},[873,2670,2671,2685],{},[876,2672,2673,2675,2677,2679,2681,2683],{},[879,2674,882],{"mathvariant":881},[884,2676,887],{"stretchy":886},[879,2678,1332],{},[884,2680,1822],{},[879,2682,1825],{},[884,2684,894],{"stretchy":886},[896,2686,1830],{"encoding":898},[667,2688,2690,2714],{"className":2689,"ariaHidden":904},[903],[667,2691,2693,2696,2699,2702,2705,2708,2711],{"className":2692},[908],[667,2694],{"className":2695,"style":913},[912],[667,2697,882],{"className":2698,"style":919},[917,918],[667,2700,887],{"className":2701},[923],[667,2703,1332],{"className":2704},[917,1356],[667,2706],{"className":2707,"style":1853},[1852],[667,2709,1822],{"className":2710},[1857],[667,2712],{"className":2713,"style":1853},[1852],[667,2715,2717,2720,2723],{"className":2716},[908],[667,2718],{"className":2719,"style":913},[912],[667,2721,1825],{"className":2722},[917,1356],[667,2724,894],{"className":2725},[930],[667,2727,2729,2752],{"className":2728},[863],[667,2730,2732],{"className":2731},[867],[869,2733,2734],{"xmlns":871},[873,2735,2736,2750],{},[876,2737,2738,2740,2742,2744,2746,2748],{},[879,2739,882],{"mathvariant":881},[884,2741,887],{"stretchy":886},[879,2743,1332],{},[884,2745,1905],{},[879,2747,1825],{},[884,2749,894],{"stretchy":886},[896,2751,1912],{"encoding":898},[667,2753,2755,2779],{"className":2754,"ariaHidden":904},[903],[667,2756,2758,2761,2764,2767,2770,2773,2776],{"className":2757},[908],[667,2759],{"className":2760,"style":913},[912],[667,2762,882],{"className":2763,"style":919},[917,918],[667,2765,887],{"className":2766},[923],[667,2768,1332],{"className":2769},[917,1356],[667,2771],{"className":2772,"style":1853},[1852],[667,2774,1905],{"className":2775},[1857],[667,2777],{"className":2778,"style":1853},[1852],[667,2780,2782,2785,2788],{"className":2781},[908],[667,2783],{"className":2784,"style":913},[912],[667,2786,1825],{"className":2787},[917,1356],[667,2789,894],{"className":2790},[930],[594,2792,2794],{"id":2793},"à-mémoriser","À mémoriser",[1265,2796,2797,2805,2811,2817],{},[1268,2798,2799,2521,2802,2804],{},[603,2800,2801],{},"Index par clé",[664,2803,1368],{}," qui associe une valeur de colonne à la ligne\ncomplète.",[1268,2806,2807,2810],{},[603,2808,2809],{},"La clé doit être unique"," dans la table indexée (sinon écrasement).",[1268,2812,2813,2816],{},[603,2814,2815],{},"Fusion par clé commune"," : indexer la 2e table, parcourir la 1re, lookup.",[1268,2818,2819,2342,2821,2824],{},[603,2820,2363],{},[603,2822,2823],{},"jointure externe"," : ignorer ou conserver les\norphelins.",[594,2826,2828],{"id":2827},"à-savoir-reconnaître","À savoir reconnaître",[1282,2830,2831,2841],{},[1285,2832,2833],{},[1288,2834,2835,2838],{},[1291,2836,2837],{},"Situation",[1291,2839,2840],{},"Action",[1301,2842,2843,2853,2861,2872],{},[1288,2844,2845,2848],{},[1306,2846,2847],{},"Recherches fréquentes par même clé",[1306,2849,2850,2851],{},"Construire un index ",[664,2852,1368],{},[1288,2854,2855,2858],{},[1306,2856,2857],{},"Croiser deux tables",[1306,2859,2860],{},"Indexer la plus petite, parcourir l'autre",[1288,2862,2863,2866],{},[1306,2864,2865],{},"Élèves sans note",[1306,2867,2868,2869],{},"Jointure externe avec ",[664,2870,2871],{},"index.get(cle)",[1288,2873,2874,2877],{},[1306,2875,2876],{},"Clés composées",[1306,2878,2879,2880],{},"Index avec tuple : ",[664,2881,2882],{},"{(c1, c2): ligne, ...}",[594,2884,2886],{"id":2885},"pièges-courants","Pièges courants",[1265,2888,2889,2892,2895,2907],{},[1268,2890,2891],{},"Clés non uniques → écrasement silencieux.",[1268,2893,2894],{},"Casse \u002F espaces \u002F accents incohérents entre tables.",[1268,2896,2897,2900,2901,2903,2904,2906],{},[664,2898,2899],{},"index[cle]"," lève ",[664,2902,2468],{}," ; préférer ",[664,2905,2871],{}," si la clé peut\nmanquer.",[1268,2908,2909],{},"Clés non hashables (liste, dict) interdites.",[594,2911,2913],{"id":2912},"syntaxe-python","Syntaxe Python",[657,2915,2917],{"className":659,"code":2916,"language":661,"meta":662,"style":662},"# Indexation par clé unique\nindex = {e[\"nom\"]: e for e in eleves}\nprint(index[\"Chloé\"][\"classe\"])\n\n# Fusion par clé commune (jointure interne)\nindex_notes = {n[\"nom\"]: n[\"note\"] for n in notes}\nfusion = []\nfor e in eleves:\n    if e[\"nom\"] in index_notes:\n        fusion.append({\n            \"nom\": e[\"nom\"],\n            \"classe\": e[\"classe\"],\n            \"note\": index_notes[e[\"nom\"]],\n        })\n\n# Jointure externe (None si absent)\nnote = index_notes.get(e[\"nom\"])\n",[664,2918,2919,2924,2945,2960,2964,2969,2993,3001,3011,3025,3030,3040,3050,3061,3066,3070,3075],{"__ignoreMap":662},[667,2920,2921],{"class":669,"line":670},[667,2922,2923],{"class":1076},"# Indexation par clé unique\n",[667,2925,2926,2929,2931,2933,2935,2937,2939,2941,2943],{"class":669,"line":684},[667,2927,2928],{"class":673},"index ",[667,2930,678],{"class":677},[667,2932,1214],{"class":673},[667,2934,691],{"class":690},[667,2936,1219],{"class":673},[667,2938,1094],{"class":677},[667,2940,1097],{"class":673},[667,2942,1100],{"class":677},[667,2944,1228],{"class":673},[667,2946,2947,2949,2952,2954,2956,2958],{"class":669,"line":726},[667,2948,1136],{"class":708},[667,2950,2951],{"class":673},"(index[",[667,2953,768],{"class":690},[667,2955,1156],{"class":673},[667,2957,715],{"class":690},[667,2959,1144],{"class":673},[667,2961,2962],{"class":669,"line":759},[667,2963,1070],{"emptyLinePlaceholder":1069},[667,2965,2966],{"class":669,"line":789},[667,2967,2968],{"class":1076},"# Fusion par clé commune (jointure interne)\n",[667,2970,2971,2973,2975,2977,2979,2981,2983,2985,2987,2989,2991],{"class":669,"line":819},[667,2972,2161],{"class":673},[667,2974,678],{"class":677},[667,2976,2166],{"class":673},[667,2978,691],{"class":690},[667,2980,2171],{"class":673},[667,2982,1562],{"class":690},[667,2984,1704],{"class":673},[667,2986,1094],{"class":677},[667,2988,1686],{"class":673},[667,2990,1100],{"class":677},[667,2992,2184],{"class":673},[667,2994,2995,2997,2999],{"class":669,"line":1066},[667,2996,1663],{"class":673},[667,2998,678],{"class":677},[667,3000,1668],{"class":673},[667,3002,3003,3005,3007,3009],{"class":669,"line":1073},[667,3004,1094],{"class":677},[667,3006,1097],{"class":673},[667,3008,1100],{"class":677},[667,3010,1103],{"class":673},[667,3012,3013,3015,3017,3019,3021,3023],{"class":669,"line":1080},[667,3014,2221],{"class":677},[667,3016,1699],{"class":673},[667,3018,691],{"class":690},[667,3020,1704],{"class":673},[667,3022,1100],{"class":677},[667,3024,2232],{"class":673},[667,3026,3027],{"class":669,"line":1091},[667,3028,3029],{"class":673},"        fusion.append({\n",[667,3031,3032,3034,3036,3038],{"class":669,"line":1106},[667,3033,2249],{"class":690},[667,3035,1735],{"class":673},[667,3037,691],{"class":690},[667,3039,2257],{"class":673},[667,3041,3042,3044,3046,3048],{"class":669,"line":1122},[667,3043,2263],{"class":690},[667,3045,1735],{"class":673},[667,3047,715],{"class":690},[667,3049,2257],{"class":673},[667,3051,3052,3054,3057,3059],{"class":669,"line":1127},[667,3053,2275],{"class":690},[667,3055,3056],{"class":673},": index_notes[e[",[667,3058,691],{"class":690},[667,3060,2283],{"class":673},[667,3062,3063],{"class":669,"line":1133},[667,3064,3065],{"class":673},"        })\n",[667,3067,3068],{"class":669,"line":1147},[667,3069,1070],{"emptyLinePlaceholder":1069},[667,3071,3072],{"class":669,"line":2158},[667,3073,3074],{"class":1076},"# Jointure externe (None si absent)\n",[667,3076,3077,3080,3082,3085,3087],{"class":669,"line":2187},[667,3078,3079],{"class":673},"note ",[667,3081,678],{"class":677},[667,3083,3084],{"class":673}," index_notes.get(e[",[667,3086,691],{"class":690},[667,3088,1144],{"class":673},[2561,3090,3091],{},"html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":662,"searchDepth":684,"depth":684,"links":3093},[3094,3095,3096,3097,3098],{"id":2602,"depth":684,"text":2603},{"id":2793,"depth":684,"text":2794},{"id":2827,"depth":684,"text":2828},{"id":2885,"depth":684,"text":2886},{"id":2912,"depth":684,"text":2913},"Mémo de révision sur la jointure par clé commune et l'index par dictionnaire.",{},"\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ffusion-indexation.memo",[],{"title":2596,"description":3099},"1.nsi-1ere\u002Fpd-tables-donnees\u002F4.fusion-indexation.memo","hvsy3gLnkmkSM_u_LIFxw_iqVGI3UsW-JEAUWr8pj_Y",{"id":3107,"title":3108,"body":3109,"description":3797,"extension":2583,"meta":3798,"navigation":2589,"path":3799,"seo":3800,"stem":3801,"__hash__":3802},"coursSlides\u002F1.nsi-1ere\u002Fpd-tables-donnees\u002F4.fusion-indexation.slides.md","Fusion et indexation — diapositives",{"type":591,"value":3110,"toc":3795},[3111,3115,3118,3121,3123,3126,3137,3146,3148,3152,3159,3205,3251,3253,3257,3377,3379,3383,3431,3500,3502,3506,3609,3676,3678,3682,3699,3718,3720,3724,3730,3738,3748,3750,3754,3771,3773,3777,3792],[3112,3113,323],"h1",{"id":3114},"fusion-et-indexation",[599,3116,3117],{},"Cours 4 — Croiser plusieurs tables",[3119,3120],"hr",{},[3112,3122,652],{"id":651},[599,3124,3125],{},"Une seule table ne suffit pas :",[1265,3127,3128,3131,3134],{},[1268,3129,3130],{},"Table des élèves",[1268,3132,3133],{},"Table des notes",[1268,3135,3136],{},"Table des classes",[599,3138,3139,3140,3142,3143,622],{},"→ ",[603,3141,613],{}," par une ",[603,3144,3145],{},"clé commune",[3119,3147],{},[3112,3149,3151],{"id":3150},"première-idée-indexer-une-table","Première idée : indexer une table",[599,3153,3154,3155,3158],{},"Construire un dictionnaire\n",[603,3156,3157],{},"{clé → ligne}"," :",[657,3160,3162],{"className":659,"code":3161,"language":661,"meta":662,"style":662},"index = {e[\"nom\"]: e for e in eleves}\n\nprint(index[\"Chloé\"][\"classe\"])  # 1G2\n",[664,3163,3164,3184,3188],{"__ignoreMap":662},[667,3165,3166,3168,3170,3172,3174,3176,3178,3180,3182],{"class":669,"line":670},[667,3167,2928],{"class":673},[667,3169,678],{"class":677},[667,3171,1214],{"class":673},[667,3173,691],{"class":690},[667,3175,1219],{"class":673},[667,3177,1094],{"class":677},[667,3179,1097],{"class":673},[667,3181,1100],{"class":677},[667,3183,1228],{"class":673},[667,3185,3186],{"class":669,"line":684},[667,3187,1070],{"emptyLinePlaceholder":1069},[667,3189,3190,3192,3194,3196,3198,3200,3202],{"class":669,"line":726},[667,3191,1136],{"class":708},[667,3193,2951],{"class":673},[667,3195,768],{"class":690},[667,3197,1156],{"class":673},[667,3199,715],{"class":690},[667,3201,1247],{"class":673},[667,3203,3204],{"class":1076},"# 1G2\n",[599,3206,3207,3208,622],{},"Accès en ",[667,3209,3211,3230],{"className":3210},[863],[667,3212,3214],{"className":3213},[867],[869,3215,3216],{"xmlns":871},[873,3217,3218,3228],{},[876,3219,3220,3222,3224,3226],{},[879,3221,882],{"mathvariant":881},[884,3223,887],{"stretchy":886},[889,3225,891],{},[884,3227,894],{"stretchy":886},[896,3229,899],{"encoding":898},[667,3231,3233],{"className":3232,"ariaHidden":904},[903],[667,3234,3236,3239,3242,3245,3248],{"className":3235},[908],[667,3237],{"className":3238,"style":913},[912],[667,3240,882],{"className":3241,"style":919},[917,918],[667,3243,887],{"className":3244},[923],[667,3246,891],{"className":3247},[917],[667,3249,894],{"className":3250},[930],[3119,3252],{},[3112,3254,3256],{"id":3255},"liste-vs-index","Liste vs index",[1282,3258,3259,3269],{},[1285,3260,3261],{},[1288,3262,3263,3265,3267],{},[1291,3264,1293],{},[1291,3266,1296],{},[1291,3268,1299],{},[1301,3270,3271,3324],{},[1288,3272,3273,3276,3279],{},[1306,3274,3275],{},"Liste",[1306,3277,3278],{},"parcours",[1306,3280,3281],{},[667,3282,3284,3303],{"className":3283},[863],[667,3285,3287],{"className":3286},[867],[869,3288,3289],{"xmlns":871},[873,3290,3291,3301],{},[876,3292,3293,3295,3297,3299],{},[879,3294,882],{"mathvariant":881},[884,3296,887],{"stretchy":886},[879,3298,1332],{},[884,3300,894],{"stretchy":886},[896,3302,1337],{"encoding":898},[667,3304,3306],{"className":3305,"ariaHidden":904},[903],[667,3307,3309,3312,3315,3318,3321],{"className":3308},[908],[667,3310],{"className":3311,"style":913},[912],[667,3313,882],{"className":3314,"style":919},[917,918],[667,3316,887],{"className":3317},[923],[667,3319,1332],{"className":3320},[917,1356],[667,3322,894],{"className":3323},[930],[1288,3325,3326,3330,3332],{},[1306,3327,1365,3328],{},[664,3329,1368],{},[1306,3331,1371],{},[1306,3333,3334],{},[667,3335,3337,3356],{"className":3336},[863],[667,3338,3340],{"className":3339},[867],[869,3341,3342],{"xmlns":871},[873,3343,3344,3354],{},[876,3345,3346,3348,3350,3352],{},[879,3347,882],{"mathvariant":881},[884,3349,887],{"stretchy":886},[889,3351,891],{},[884,3353,894],{"stretchy":886},[896,3355,899],{"encoding":898},[667,3357,3359],{"className":3358,"ariaHidden":904},[903],[667,3360,3362,3365,3368,3371,3374],{"className":3361},[908],[667,3363],{"className":3364,"style":913},[912],[667,3366,882],{"className":3367,"style":919},[917,918],[667,3369,887],{"className":3370},[923],[667,3372,891],{"className":3373},[917],[667,3375,894],{"className":3376},[930],[3119,3378],{},[3112,3380,3382],{"id":3381},"fusion-naïve-double-boucle","Fusion naïve : double boucle",[657,3384,3386],{"className":659,"code":3385,"language":661,"meta":662,"style":662},"for e in eleves:\n    for n in notes:\n        if e[\"nom\"] == n[\"nom\"]:\n            ...\n",[664,3387,3388,3398,3408,3426],{"__ignoreMap":662},[667,3389,3390,3392,3394,3396],{"class":669,"line":670},[667,3391,1094],{"class":677},[667,3393,1097],{"class":673},[667,3395,1100],{"class":677},[667,3397,1103],{"class":673},[667,3399,3400,3402,3404,3406],{"class":669,"line":684},[667,3401,1683],{"class":677},[667,3403,1686],{"class":673},[667,3405,1100],{"class":677},[667,3407,1691],{"class":673},[667,3409,3410,3412,3414,3416,3418,3420,3422,3424],{"class":669,"line":726},[667,3411,1696],{"class":677},[667,3413,1699],{"class":673},[667,3415,691],{"class":690},[667,3417,1704],{"class":673},[667,3419,1707],{"class":677},[667,3421,1710],{"class":673},[667,3423,691],{"class":690},[667,3425,1715],{"class":673},[667,3427,3428],{"class":669,"line":759},[667,3429,3430],{"class":708},"            ...\n",[599,3432,3433,3434,3499],{},"Complexité : ",[667,3435,3437,3460],{"className":3436},[863],[667,3438,3440],{"className":3439},[867],[869,3441,3442],{"xmlns":871},[873,3443,3444,3458],{},[876,3445,3446,3448,3450,3452,3454,3456],{},[879,3447,882],{"mathvariant":881},[884,3449,887],{"stretchy":886},[879,3451,1332],{},[884,3453,1822],{},[879,3455,1825],{},[884,3457,894],{"stretchy":886},[896,3459,1830],{"encoding":898},[667,3461,3463,3487],{"className":3462,"ariaHidden":904},[903],[667,3464,3466,3469,3472,3475,3478,3481,3484],{"className":3465},[908],[667,3467],{"className":3468,"style":913},[912],[667,3470,882],{"className":3471,"style":919},[917,918],[667,3473,887],{"className":3474},[923],[667,3476,1332],{"className":3477},[917,1356],[667,3479],{"className":3480,"style":1853},[1852],[667,3482,1822],{"className":3483},[1857],[667,3485],{"className":3486,"style":1853},[1852],[667,3488,3490,3493,3496],{"className":3489},[908],[667,3491],{"className":3492,"style":913},[912],[667,3494,1825],{"className":3495},[917,1356],[667,3497,894],{"className":3498},[930],".\nOK pour petites tables, pas plus.",[3119,3501],{},[3112,3503,3505],{"id":3504},"fusion-efficace-indexer-puis-parcourir","Fusion efficace : indexer puis parcourir",[657,3507,3509],{"className":659,"code":3508,"language":661,"meta":662,"style":662},"index_notes = {n[\"nom\"]: n[\"note\"] for n in notes}\n\nfusion = []\nfor e in eleves:\n    if e[\"nom\"] in index_notes:\n        fusion.append({\n            \"nom\": e[\"nom\"],\n            \"classe\": e[\"classe\"],\n            \"note\": index_notes[e[\"nom\"]],\n        })\n",[664,3510,3511,3535,3539,3547,3557,3571,3575,3585,3595,3605],{"__ignoreMap":662},[667,3512,3513,3515,3517,3519,3521,3523,3525,3527,3529,3531,3533],{"class":669,"line":670},[667,3514,2161],{"class":673},[667,3516,678],{"class":677},[667,3518,2166],{"class":673},[667,3520,691],{"class":690},[667,3522,2171],{"class":673},[667,3524,1562],{"class":690},[667,3526,1704],{"class":673},[667,3528,1094],{"class":677},[667,3530,1686],{"class":673},[667,3532,1100],{"class":677},[667,3534,2184],{"class":673},[667,3536,3537],{"class":669,"line":684},[667,3538,1070],{"emptyLinePlaceholder":1069},[667,3540,3541,3543,3545],{"class":669,"line":726},[667,3542,1663],{"class":673},[667,3544,678],{"class":677},[667,3546,1668],{"class":673},[667,3548,3549,3551,3553,3555],{"class":669,"line":759},[667,3550,1094],{"class":677},[667,3552,1097],{"class":673},[667,3554,1100],{"class":677},[667,3556,1103],{"class":673},[667,3558,3559,3561,3563,3565,3567,3569],{"class":669,"line":789},[667,3560,2221],{"class":677},[667,3562,1699],{"class":673},[667,3564,691],{"class":690},[667,3566,1704],{"class":673},[667,3568,1100],{"class":677},[667,3570,2232],{"class":673},[667,3572,3573],{"class":669,"line":819},[667,3574,3029],{"class":673},[667,3576,3577,3579,3581,3583],{"class":669,"line":1066},[667,3578,2249],{"class":690},[667,3580,1735],{"class":673},[667,3582,691],{"class":690},[667,3584,2257],{"class":673},[667,3586,3587,3589,3591,3593],{"class":669,"line":1073},[667,3588,2263],{"class":690},[667,3590,1735],{"class":673},[667,3592,715],{"class":690},[667,3594,2257],{"class":673},[667,3596,3597,3599,3601,3603],{"class":669,"line":1080},[667,3598,2275],{"class":690},[667,3600,3056],{"class":673},[667,3602,691],{"class":690},[667,3604,2283],{"class":673},[667,3606,3607],{"class":669,"line":1091},[667,3608,3065],{"class":673},[599,3610,3433,3611,622],{},[667,3612,3614,3637],{"className":3613},[863],[667,3615,3617],{"className":3616},[867],[869,3618,3619],{"xmlns":871},[873,3620,3621,3635],{},[876,3622,3623,3625,3627,3629,3631,3633],{},[879,3624,882],{"mathvariant":881},[884,3626,887],{"stretchy":886},[879,3628,1332],{},[884,3630,1905],{},[879,3632,1825],{},[884,3634,894],{"stretchy":886},[896,3636,1912],{"encoding":898},[667,3638,3640,3664],{"className":3639,"ariaHidden":904},[903],[667,3641,3643,3646,3649,3652,3655,3658,3661],{"className":3642},[908],[667,3644],{"className":3645,"style":913},[912],[667,3647,882],{"className":3648,"style":919},[917,918],[667,3650,887],{"className":3651},[923],[667,3653,1332],{"className":3654},[917,1356],[667,3656],{"className":3657,"style":1853},[1852],[667,3659,1905],{"className":3660},[1857],[667,3662],{"className":3663,"style":1853},[1852],[667,3665,3667,3670,3673],{"className":3666},[908],[667,3668],{"className":3669,"style":913},[912],[667,3671,1825],{"className":3672},[917,1356],[667,3674,894],{"className":3675},[930],[3119,3677],{},[3112,3679,3681],{"id":3680},"jointure-interne-vs-externe","Jointure interne vs externe",[1265,3683,3684,3690],{},[1268,3685,3686,3689],{},[603,3687,3688],{},"Interne"," : ignore les orphelins.",[1268,3691,3692,3695,3696,3698],{},[603,3693,3694],{},"Externe gauche"," : conserve tout, ",[664,3697,2373],{}," si absent.",[657,3700,3702],{"className":659,"code":3701,"language":661,"meta":662,"style":662},"note = index_notes.get(e[\"nom\"])  # None si absent\n",[664,3703,3704],{"__ignoreMap":662},[667,3705,3706,3708,3710,3712,3714,3716],{"class":669,"line":670},[667,3707,3079],{"class":673},[667,3709,678],{"class":677},[667,3711,3084],{"class":673},[667,3713,691],{"class":690},[667,3715,1247],{"class":673},[667,3717,2445],{"class":1076},[3119,3719],{},[3112,3721,3723],{"id":3722},"domaine-partagé","Domaine partagé",[599,3725,3726,3727,3729],{},"La clé commune doit avoir le\n",[603,3728,2337],{}," dans les deux tables.",[599,3731,3732,3733,3735,3736],{},"⚠ ",[664,3734,768],{}," ≠ ",[664,3737,2341],{},[599,3739,3740,3741,712,3744,3747],{},"→ normaliser (",[664,3742,3743],{},"strip",[664,3745,3746],{},"lower",") avant.",[3119,3749],{},[3112,3751,3753],{"id":3752},"pièges","Pièges",[1265,3755,3756,3759,3762],{},[1268,3757,3758],{},"Clés non uniques → écrasement",[1268,3760,3761],{},"Clés non hashables (liste, dict) interdites",[1268,3763,3764,2900,3766,2903,3768],{},[664,3765,2899],{},[664,3767,2468],{},[664,3769,3770],{},".get()",[3119,3772],{},[3112,3774,3776],{"id":3775},"à-retenir","À retenir",[599,3778,3779,3785,3788,3789,3791],{},[603,3780,3781,3782,622],{},"Indexer = dictionnaire ",[664,3783,3784],{},"{clé: ligne}",[603,3786,3787],{},"Fusionner = indexer puis lookup.","\nPréfigure la ",[603,3790,2554],{}," (Terminale).",[2561,3793,3794],{},"html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":662,"searchDepth":684,"depth":684,"links":3796},[],"Deck projetable sur la jointure par clé et l'index dictionnaire.",{},"\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ffusion-indexation.slides",{"title":3108,"description":3797},"1.nsi-1ere\u002Fpd-tables-donnees\u002F4.fusion-indexation.slides","6aoJWWjZKgxlMgoefYho5dr2Rjcxm2UsWRWzC51TWm8",{"id":2595,"title":2596,"bo":3804,"body":3805,"description":3099,"eval":2582,"extension":2583,"labo":2582,"meta":4251,"navigation":2589,"path":3101,"quizzes":4252,"readingTime":670,"seo":4253,"stem":3104,"tp":2582,"__hash__":3105},[588,589],{"type":591,"value":3806,"toc":4244},[3807,3809,3990,3992,4014,4016,4058,4060,4076,4078,4242],[594,3808,2603],{"id":2602},[599,3810,3811,2612,3815,2656,3858,2660,3860,855,3925,622],{},[603,3812,2608,3813],{},[664,3814,2611],{},[667,3816,3818,3837],{"className":3817},[863],[667,3819,3821],{"className":3820},[867],[869,3822,3823],{"xmlns":871},[873,3824,3825,3835],{},[876,3826,3827,3829,3831,3833],{},[879,3828,882],{"mathvariant":881},[884,3830,887],{"stretchy":886},[889,3832,891],{},[884,3834,894],{"stretchy":886},[896,3836,899],{"encoding":898},[667,3838,3840],{"className":3839,"ariaHidden":904},[903],[667,3841,3843,3846,3849,3852,3855],{"className":3842},[908],[667,3844],{"className":3845,"style":913},[912],[667,3847,882],{"className":3848,"style":919},[917,918],[667,3850,887],{"className":3851},[923],[667,3853,891],{"className":3854},[917],[667,3856,894],{"className":3857},[930],[603,3859,2659],{},[667,3861,3863,3886],{"className":3862},[863],[667,3864,3866],{"className":3865},[867],[869,3867,3868],{"xmlns":871},[873,3869,3870,3884],{},[876,3871,3872,3874,3876,3878,3880,3882],{},[879,3873,882],{"mathvariant":881},[884,3875,887],{"stretchy":886},[879,3877,1332],{},[884,3879,1822],{},[879,3881,1825],{},[884,3883,894],{"stretchy":886},[896,3885,1830],{"encoding":898},[667,3887,3889,3913],{"className":3888,"ariaHidden":904},[903],[667,3890,3892,3895,3898,3901,3904,3907,3910],{"className":3891},[908],[667,3893],{"className":3894,"style":913},[912],[667,3896,882],{"className":3897,"style":919},[917,918],[667,3899,887],{"className":3900},[923],[667,3902,1332],{"className":3903},[917,1356],[667,3905],{"className":3906,"style":1853},[1852],[667,3908,1822],{"className":3909},[1857],[667,3911],{"className":3912,"style":1853},[1852],[667,3914,3916,3919,3922],{"className":3915},[908],[667,3917],{"className":3918,"style":913},[912],[667,3920,1825],{"className":3921},[917,1356],[667,3923,894],{"className":3924},[930],[667,3926,3928,3951],{"className":3927},[863],[667,3929,3931],{"className":3930},[867],[869,3932,3933],{"xmlns":871},[873,3934,3935,3949],{},[876,3936,3937,3939,3941,3943,3945,3947],{},[879,3938,882],{"mathvariant":881},[884,3940,887],{"stretchy":886},[879,3942,1332],{},[884,3944,1905],{},[879,3946,1825],{},[884,3948,894],{"stretchy":886},[896,3950,1912],{"encoding":898},[667,3952,3954,3978],{"className":3953,"ariaHidden":904},[903],[667,3955,3957,3960,3963,3966,3969,3972,3975],{"className":3956},[908],[667,3958],{"className":3959,"style":913},[912],[667,3961,882],{"className":3962,"style":919},[917,918],[667,3964,887],{"className":3965},[923],[667,3967,1332],{"className":3968},[917,1356],[667,3970],{"className":3971,"style":1853},[1852],[667,3973,1905],{"className":3974},[1857],[667,3976],{"className":3977,"style":1853},[1852],[667,3979,3981,3984,3987],{"className":3980},[908],[667,3982],{"className":3983,"style":913},[912],[667,3985,1825],{"className":3986},[917,1356],[667,3988,894],{"className":3989},[930],[594,3991,2794],{"id":2793},[1265,3993,3994,4000,4004,4008],{},[1268,3995,3996,2521,3998,2804],{},[603,3997,2801],{},[664,3999,1368],{},[1268,4001,4002,2810],{},[603,4003,2809],{},[1268,4005,4006,2816],{},[603,4007,2815],{},[1268,4009,4010,2342,4012,2824],{},[603,4011,2363],{},[603,4013,2823],{},[594,4015,2828],{"id":2827},[1282,4017,4018,4026],{},[1285,4019,4020],{},[1288,4021,4022,4024],{},[1291,4023,2837],{},[1291,4025,2840],{},[1301,4027,4028,4036,4042,4050],{},[1288,4029,4030,4032],{},[1306,4031,2847],{},[1306,4033,2850,4034],{},[664,4035,1368],{},[1288,4037,4038,4040],{},[1306,4039,2857],{},[1306,4041,2860],{},[1288,4043,4044,4046],{},[1306,4045,2865],{},[1306,4047,2868,4048],{},[664,4049,2871],{},[1288,4051,4052,4054],{},[1306,4053,2876],{},[1306,4055,2879,4056],{},[664,4057,2882],{},[594,4059,2886],{"id":2885},[1265,4061,4062,4064,4066,4074],{},[1268,4063,2891],{},[1268,4065,2894],{},[1268,4067,4068,2900,4070,2903,4072,2906],{},[664,4069,2899],{},[664,4071,2468],{},[664,4073,2871],{},[1268,4075,2909],{},[594,4077,2913],{"id":2912},[657,4079,4080],{"className":659,"code":2916,"language":661,"meta":662,"style":662},[664,4081,4082,4086,4106,4120,4124,4128,4152,4160,4170,4184,4188,4198,4208,4218,4222,4226,4230],{"__ignoreMap":662},[667,4083,4084],{"class":669,"line":670},[667,4085,2923],{"class":1076},[667,4087,4088,4090,4092,4094,4096,4098,4100,4102,4104],{"class":669,"line":684},[667,4089,2928],{"class":673},[667,4091,678],{"class":677},[667,4093,1214],{"class":673},[667,4095,691],{"class":690},[667,4097,1219],{"class":673},[667,4099,1094],{"class":677},[667,4101,1097],{"class":673},[667,4103,1100],{"class":677},[667,4105,1228],{"class":673},[667,4107,4108,4110,4112,4114,4116,4118],{"class":669,"line":726},[667,4109,1136],{"class":708},[667,4111,2951],{"class":673},[667,4113,768],{"class":690},[667,4115,1156],{"class":673},[667,4117,715],{"class":690},[667,4119,1144],{"class":673},[667,4121,4122],{"class":669,"line":759},[667,4123,1070],{"emptyLinePlaceholder":1069},[667,4125,4126],{"class":669,"line":789},[667,4127,2968],{"class":1076},[667,4129,4130,4132,4134,4136,4138,4140,4142,4144,4146,4148,4150],{"class":669,"line":819},[667,4131,2161],{"class":673},[667,4133,678],{"class":677},[667,4135,2166],{"class":673},[667,4137,691],{"class":690},[667,4139,2171],{"class":673},[667,4141,1562],{"class":690},[667,4143,1704],{"class":673},[667,4145,1094],{"class":677},[667,4147,1686],{"class":673},[667,4149,1100],{"class":677},[667,4151,2184],{"class":673},[667,4153,4154,4156,4158],{"class":669,"line":1066},[667,4155,1663],{"class":673},[667,4157,678],{"class":677},[667,4159,1668],{"class":673},[667,4161,4162,4164,4166,4168],{"class":669,"line":1073},[667,4163,1094],{"class":677},[667,4165,1097],{"class":673},[667,4167,1100],{"class":677},[667,4169,1103],{"class":673},[667,4171,4172,4174,4176,4178,4180,4182],{"class":669,"line":1080},[667,4173,2221],{"class":677},[667,4175,1699],{"class":673},[667,4177,691],{"class":690},[667,4179,1704],{"class":673},[667,4181,1100],{"class":677},[667,4183,2232],{"class":673},[667,4185,4186],{"class":669,"line":1091},[667,4187,3029],{"class":673},[667,4189,4190,4192,4194,4196],{"class":669,"line":1106},[667,4191,2249],{"class":690},[667,4193,1735],{"class":673},[667,4195,691],{"class":690},[667,4197,2257],{"class":673},[667,4199,4200,4202,4204,4206],{"class":669,"line":1122},[667,4201,2263],{"class":690},[667,4203,1735],{"class":673},[667,4205,715],{"class":690},[667,4207,2257],{"class":673},[667,4209,4210,4212,4214,4216],{"class":669,"line":1127},[667,4211,2275],{"class":690},[667,4213,3056],{"class":673},[667,4215,691],{"class":690},[667,4217,2283],{"class":673},[667,4219,4220],{"class":669,"line":1133},[667,4221,3065],{"class":673},[667,4223,4224],{"class":669,"line":1147},[667,4225,1070],{"emptyLinePlaceholder":1069},[667,4227,4228],{"class":669,"line":2158},[667,4229,3074],{"class":1076},[667,4231,4232,4234,4236,4238,4240],{"class":669,"line":2187},[667,4233,3079],{"class":673},[667,4235,678],{"class":677},[667,4237,3084],{"class":673},[667,4239,691],{"class":690},[667,4241,1144],{"class":673},[2561,4243,3091],{},{"title":662,"searchDepth":684,"depth":684,"links":4245},[4246,4247,4248,4249,4250],{"id":2602,"depth":684,"text":2603},{"id":2793,"depth":684,"text":2794},{"id":2827,"depth":684,"text":2828},{"id":2885,"depth":684,"text":2886},{"id":2912,"depth":684,"text":2913},{},[],{"title":2596,"description":3099},{"id":3107,"title":3108,"body":4255,"description":3797,"extension":2583,"meta":4880,"navigation":2589,"path":3799,"seo":4881,"stem":3801,"__hash__":3802},{"type":591,"value":4256,"toc":4878},[4257,4259,4261,4263,4265,4267,4275,4281,4283,4285,4289,4333,4378,4380,4382,4500,4502,4504,4550,4617,4619,4621,4723,4790,4792,4794,4806,4824,4826,4828,4832,4838,4844,4846,4848,4862,4864,4866,4876],[3112,4258,323],{"id":3114},[599,4260,3117],{},[3119,4262],{},[3112,4264,652],{"id":651},[599,4266,3125],{},[1265,4268,4269,4271,4273],{},[1268,4270,3130],{},[1268,4272,3133],{},[1268,4274,3136],{},[599,4276,3139,4277,3142,4279,622],{},[603,4278,613],{},[603,4280,3145],{},[3119,4282],{},[3112,4284,3151],{"id":3150},[599,4286,3154,4287,3158],{},[603,4288,3157],{},[657,4290,4291],{"className":659,"code":3161,"language":661,"meta":662,"style":662},[664,4292,4293,4313,4317],{"__ignoreMap":662},[667,4294,4295,4297,4299,4301,4303,4305,4307,4309,4311],{"class":669,"line":670},[667,4296,2928],{"class":673},[667,4298,678],{"class":677},[667,4300,1214],{"class":673},[667,4302,691],{"class":690},[667,4304,1219],{"class":673},[667,4306,1094],{"class":677},[667,4308,1097],{"class":673},[667,4310,1100],{"class":677},[667,4312,1228],{"class":673},[667,4314,4315],{"class":669,"line":684},[667,4316,1070],{"emptyLinePlaceholder":1069},[667,4318,4319,4321,4323,4325,4327,4329,4331],{"class":669,"line":726},[667,4320,1136],{"class":708},[667,4322,2951],{"class":673},[667,4324,768],{"class":690},[667,4326,1156],{"class":673},[667,4328,715],{"class":690},[667,4330,1247],{"class":673},[667,4332,3204],{"class":1076},[599,4334,3207,4335,622],{},[667,4336,4338,4357],{"className":4337},[863],[667,4339,4341],{"className":4340},[867],[869,4342,4343],{"xmlns":871},[873,4344,4345,4355],{},[876,4346,4347,4349,4351,4353],{},[879,4348,882],{"mathvariant":881},[884,4350,887],{"stretchy":886},[889,4352,891],{},[884,4354,894],{"stretchy":886},[896,4356,899],{"encoding":898},[667,4358,4360],{"className":4359,"ariaHidden":904},[903],[667,4361,4363,4366,4369,4372,4375],{"className":4362},[908],[667,4364],{"className":4365,"style":913},[912],[667,4367,882],{"className":4368,"style":919},[917,918],[667,4370,887],{"className":4371},[923],[667,4373,891],{"className":4374},[917],[667,4376,894],{"className":4377},[930],[3119,4379],{},[3112,4381,3256],{"id":3255},[1282,4383,4384,4394],{},[1285,4385,4386],{},[1288,4387,4388,4390,4392],{},[1291,4389,1293],{},[1291,4391,1296],{},[1291,4393,1299],{},[1301,4395,4396,4447],{},[1288,4397,4398,4400,4402],{},[1306,4399,3275],{},[1306,4401,3278],{},[1306,4403,4404],{},[667,4405,4407,4426],{"className":4406},[863],[667,4408,4410],{"className":4409},[867],[869,4411,4412],{"xmlns":871},[873,4413,4414,4424],{},[876,4415,4416,4418,4420,4422],{},[879,4417,882],{"mathvariant":881},[884,4419,887],{"stretchy":886},[879,4421,1332],{},[884,4423,894],{"stretchy":886},[896,4425,1337],{"encoding":898},[667,4427,4429],{"className":4428,"ariaHidden":904},[903],[667,4430,4432,4435,4438,4441,4444],{"className":4431},[908],[667,4433],{"className":4434,"style":913},[912],[667,4436,882],{"className":4437,"style":919},[917,918],[667,4439,887],{"className":4440},[923],[667,4442,1332],{"className":4443},[917,1356],[667,4445,894],{"className":4446},[930],[1288,4448,4449,4453,4455],{},[1306,4450,1365,4451],{},[664,4452,1368],{},[1306,4454,1371],{},[1306,4456,4457],{},[667,4458,4460,4479],{"className":4459},[863],[667,4461,4463],{"className":4462},[867],[869,4464,4465],{"xmlns":871},[873,4466,4467,4477],{},[876,4468,4469,4471,4473,4475],{},[879,4470,882],{"mathvariant":881},[884,4472,887],{"stretchy":886},[889,4474,891],{},[884,4476,894],{"stretchy":886},[896,4478,899],{"encoding":898},[667,4480,4482],{"className":4481,"ariaHidden":904},[903],[667,4483,4485,4488,4491,4494,4497],{"className":4484},[908],[667,4486],{"className":4487,"style":913},[912],[667,4489,882],{"className":4490,"style":919},[917,918],[667,4492,887],{"className":4493},[923],[667,4495,891],{"className":4496},[917],[667,4498,894],{"className":4499},[930],[3119,4501],{},[3112,4503,3382],{"id":3381},[657,4505,4506],{"className":659,"code":3385,"language":661,"meta":662,"style":662},[664,4507,4508,4518,4528,4546],{"__ignoreMap":662},[667,4509,4510,4512,4514,4516],{"class":669,"line":670},[667,4511,1094],{"class":677},[667,4513,1097],{"class":673},[667,4515,1100],{"class":677},[667,4517,1103],{"class":673},[667,4519,4520,4522,4524,4526],{"class":669,"line":684},[667,4521,1683],{"class":677},[667,4523,1686],{"class":673},[667,4525,1100],{"class":677},[667,4527,1691],{"class":673},[667,4529,4530,4532,4534,4536,4538,4540,4542,4544],{"class":669,"line":726},[667,4531,1696],{"class":677},[667,4533,1699],{"class":673},[667,4535,691],{"class":690},[667,4537,1704],{"class":673},[667,4539,1707],{"class":677},[667,4541,1710],{"class":673},[667,4543,691],{"class":690},[667,4545,1715],{"class":673},[667,4547,4548],{"class":669,"line":759},[667,4549,3430],{"class":708},[599,4551,3433,4552,3499],{},[667,4553,4555,4578],{"className":4554},[863],[667,4556,4558],{"className":4557},[867],[869,4559,4560],{"xmlns":871},[873,4561,4562,4576],{},[876,4563,4564,4566,4568,4570,4572,4574],{},[879,4565,882],{"mathvariant":881},[884,4567,887],{"stretchy":886},[879,4569,1332],{},[884,4571,1822],{},[879,4573,1825],{},[884,4575,894],{"stretchy":886},[896,4577,1830],{"encoding":898},[667,4579,4581,4605],{"className":4580,"ariaHidden":904},[903],[667,4582,4584,4587,4590,4593,4596,4599,4602],{"className":4583},[908],[667,4585],{"className":4586,"style":913},[912],[667,4588,882],{"className":4589,"style":919},[917,918],[667,4591,887],{"className":4592},[923],[667,4594,1332],{"className":4595},[917,1356],[667,4597],{"className":4598,"style":1853},[1852],[667,4600,1822],{"className":4601},[1857],[667,4603],{"className":4604,"style":1853},[1852],[667,4606,4608,4611,4614],{"className":4607},[908],[667,4609],{"className":4610,"style":913},[912],[667,4612,1825],{"className":4613},[917,1356],[667,4615,894],{"className":4616},[930],[3119,4618],{},[3112,4620,3505],{"id":3504},[657,4622,4623],{"className":659,"code":3508,"language":661,"meta":662,"style":662},[664,4624,4625,4649,4653,4661,4671,4685,4689,4699,4709,4719],{"__ignoreMap":662},[667,4626,4627,4629,4631,4633,4635,4637,4639,4641,4643,4645,4647],{"class":669,"line":670},[667,4628,2161],{"class":673},[667,4630,678],{"class":677},[667,4632,2166],{"class":673},[667,4634,691],{"class":690},[667,4636,2171],{"class":673},[667,4638,1562],{"class":690},[667,4640,1704],{"class":673},[667,4642,1094],{"class":677},[667,4644,1686],{"class":673},[667,4646,1100],{"class":677},[667,4648,2184],{"class":673},[667,4650,4651],{"class":669,"line":684},[667,4652,1070],{"emptyLinePlaceholder":1069},[667,4654,4655,4657,4659],{"class":669,"line":726},[667,4656,1663],{"class":673},[667,4658,678],{"class":677},[667,4660,1668],{"class":673},[667,4662,4663,4665,4667,4669],{"class":669,"line":759},[667,4664,1094],{"class":677},[667,4666,1097],{"class":673},[667,4668,1100],{"class":677},[667,4670,1103],{"class":673},[667,4672,4673,4675,4677,4679,4681,4683],{"class":669,"line":789},[667,4674,2221],{"class":677},[667,4676,1699],{"class":673},[667,4678,691],{"class":690},[667,4680,1704],{"class":673},[667,4682,1100],{"class":677},[667,4684,2232],{"class":673},[667,4686,4687],{"class":669,"line":819},[667,4688,3029],{"class":673},[667,4690,4691,4693,4695,4697],{"class":669,"line":1066},[667,4692,2249],{"class":690},[667,4694,1735],{"class":673},[667,4696,691],{"class":690},[667,4698,2257],{"class":673},[667,4700,4701,4703,4705,4707],{"class":669,"line":1073},[667,4702,2263],{"class":690},[667,4704,1735],{"class":673},[667,4706,715],{"class":690},[667,4708,2257],{"class":673},[667,4710,4711,4713,4715,4717],{"class":669,"line":1080},[667,4712,2275],{"class":690},[667,4714,3056],{"class":673},[667,4716,691],{"class":690},[667,4718,2283],{"class":673},[667,4720,4721],{"class":669,"line":1091},[667,4722,3065],{"class":673},[599,4724,3433,4725,622],{},[667,4726,4728,4751],{"className":4727},[863],[667,4729,4731],{"className":4730},[867],[869,4732,4733],{"xmlns":871},[873,4734,4735,4749],{},[876,4736,4737,4739,4741,4743,4745,4747],{},[879,4738,882],{"mathvariant":881},[884,4740,887],{"stretchy":886},[879,4742,1332],{},[884,4744,1905],{},[879,4746,1825],{},[884,4748,894],{"stretchy":886},[896,4750,1912],{"encoding":898},[667,4752,4754,4778],{"className":4753,"ariaHidden":904},[903],[667,4755,4757,4760,4763,4766,4769,4772,4775],{"className":4756},[908],[667,4758],{"className":4759,"style":913},[912],[667,4761,882],{"className":4762,"style":919},[917,918],[667,4764,887],{"className":4765},[923],[667,4767,1332],{"className":4768},[917,1356],[667,4770],{"className":4771,"style":1853},[1852],[667,4773,1905],{"className":4774},[1857],[667,4776],{"className":4777,"style":1853},[1852],[667,4779,4781,4784,4787],{"className":4780},[908],[667,4782],{"className":4783,"style":913},[912],[667,4785,1825],{"className":4786},[917,1356],[667,4788,894],{"className":4789},[930],[3119,4791],{},[3112,4793,3681],{"id":3680},[1265,4795,4796,4800],{},[1268,4797,4798,3689],{},[603,4799,3688],{},[1268,4801,4802,3695,4804,3698],{},[603,4803,3694],{},[664,4805,2373],{},[657,4807,4808],{"className":659,"code":3701,"language":661,"meta":662,"style":662},[664,4809,4810],{"__ignoreMap":662},[667,4811,4812,4814,4816,4818,4820,4822],{"class":669,"line":670},[667,4813,3079],{"class":673},[667,4815,678],{"class":677},[667,4817,3084],{"class":673},[667,4819,691],{"class":690},[667,4821,1247],{"class":673},[667,4823,2445],{"class":1076},[3119,4825],{},[3112,4827,3723],{"id":3722},[599,4829,3726,4830,3729],{},[603,4831,2337],{},[599,4833,3732,4834,3735,4836],{},[664,4835,768],{},[664,4837,2341],{},[599,4839,3740,4840,712,4842,3747],{},[664,4841,3743],{},[664,4843,3746],{},[3119,4845],{},[3112,4847,3753],{"id":3752},[1265,4849,4850,4852,4854],{},[1268,4851,3758],{},[1268,4853,3761],{},[1268,4855,4856,2900,4858,2903,4860],{},[664,4857,2899],{},[664,4859,2468],{},[664,4861,3770],{},[3119,4863],{},[3112,4865,3776],{"id":3775},[599,4867,4868,4872,3788,4874,3791],{},[603,4869,3781,4870,622],{},[664,4871,3784],{},[603,4873,3787],{},[603,4875,2554],{},[2561,4877,3794],{},{"title":662,"searchDepth":684,"depth":684,"links":4879},[],{},{"title":3108,"description":3797},1788035580254]