Requêtes dans une liste de dictionnaires

Série d'exercices

Cet exercice fait partie d'une série :

On s'intéresse dans cet exercice aux données décrivant différents animaux (source).

Chaque animal est décrit par les attributs suivants :

Attributs Description Type Python
air Respire-t-il dans l'air ? bool
aquatique Vit-il dans l'eau ? bool
dents A-t-il des dents ? bool
domestique Est-ce un animal domestique ? bool
lait Allaite-t-il ses petits ? bool
nom Son nom str
nageoires A-t-il des nageoires ? bool
oeufs Pond-il des œufs ? bool
pattes Combien a-t-il de pattes ? int
poils A-t-il des poils ? bool
plumes A-t-il des plumes ? bool
prédateur Est-ce un prédateur ? bool
queue A-t-il une queue ? bool
taille_chat Est-il de la taille d'un chat ? bool
venimeux Est-il venimeux ? bool
vertébré Est-ce un vertébré ? bool
volant Peut-il voler ? bool

Ces données ont été importées dans une liste Python nommée animaux. Chacun des éléments de cette liste est un dictionnaire contenant les informations décrivant un animal. On affiche ci-dessous le premier élément de la liste animaux :

🐍 Console Python
>>> animaux[0]  # l'ensemble des informations du 1er animal
{'air': True, 'aquatique': True, 'dents': False, 'domestique': True, 'lait': False, 'nom': 'tortue', 'nageoires': False, 'oeufs': True, 'pattes': 4, 'po
ils': False, 'plumes': False, 'prédateur': False, 'queue': True, 'taille_chat': True, 'venimeux': False, 'vertébré': True, 'volant': False}
>>> animaux[0]["nom"]  # le nom du 1er animal
'tortue'
>>> animaux[0]["poils"]  # le 1er animal a-t-il des poils ?
False
>>> animaux[0]["aquatique"]  # le 1er animal vit-il dans l'eau ?
True

Comme on peut le voir ci-dessus, cet élément décrit la tortue 🐢 qui, comme chacun sait, n'a pas de poils et vit dans l'eau !

Le but de l'exercice est d'effectuer des requêtes sur cette liste afin de sélectionner certains éléments (certains animaux). On utilise pour ce faire les listes en compréhension.

L'instruction ci-dessous permet par exemple de sélectionner les noms des animaux volants :

🐍 Console Python
>>> [animal["nom"] for animal in animaux if animal["volant"]]
['moustique', 'frelon', 'papillon', 'blatte', 'libellule', 'cigale', 'fourmi']

Il est aussi possible de compter les résultats en faisant par exemple (nombre d'animaux aquatiques sans pattes) :

🐍 Console Python
>>> len([animal for animal in animaux if animal["aquatique"] and animal["pattes"] == 0])
10

Compléter le code ci-dessous en effectuant les requêtes proposées.

Mode deux colonnes

Le mode deux colonnes vous permet d'afficher l'éditeur à côté des noms des attributs.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 20/20
.128013pbv(40i2edmx3;s7= 1o5w_lSnatf-)9h]6,Qcrgq[éyP?Cku8/050k0j0C0B0h0y0p0s0M0y0B0p0p0r010C0h0b010406050p0X0l0l0B0N0S040z0u0y0X0@0u0A050Z0~1012140|0b041d1k051n0Z1n1p1k0|0k0h0d0,0.0:0=0H0h0O0H0y1D0H0C0`050%0c0y0j1y0/0;011C1E1G1E0C1M1O1K0C0c0u0k141L0N1l0C0H0,170p0b0B0A0=0i011Q1A010D0)0j0A0B0l0j1K1=1@1|1S1 1O22240`0a0s0T0N0u0b0u0p0h1a0A0s0#1:0N0N0j0M2p1d270A1l0Z1.2C0C1,1+1-0k290=1G0A212m1K1v1x0-1R2M0h2O0A1(1w1K0b2v1l2A2C2*0}1?2q2U1}2Z0N110y0`0s0t2z2.0{2-282:1S2=2@2_0i2|1@2~2A2L01330B2^040s0n372B0|3a310=3d3f0s0f3j392.3b3p2_0v3t3l3v3n3c0u2?3e2_0J3A2 2/1z323F343g0q3K3m3N3o3P3H3g0Y3T3C3V3E3G3q0G3#303%3x040t0g3,3M2V3(3Q0t2{1e2}3B3-3^3/0t363}383 3@2;3X3f0t3i453k3L3w4a0`0t3s4e3u40493)4j3z4m474h4q3:3J4t4g3D423S4z3U414i3:3!4E3$4G4w0t3+4K4o3O4w0i3=4Q484S3Q0i3|2*4u4B4H0i444$4A3.4)4d4,4F4p4Z4l4;4L4?3Y0i4s4_4R3W4T4y4 4X514Z4D544v4Z4J594(4T4P5d4.4w0n4V5h4M3Q0n4#3~4-5n3Y0n4+5r4=4Y5u4:5x4`5z3f0n4^5C503_5u4~5I555K5F535N5a5u585S5e5o5c5W5i5o5g5!5t3f0f5l5(4{5*5q381m2(1d2S2F0k2J3b0M1(251l5^1o5?2,4m055}0#2)5D0=0M0t0`030s0L0X0j0*0s0p1b0C0s1O0+2Z0l0+0#0+1@0h110X0m0s0d171@0C0+0U3?3w0`2v0P6i0C0j0x5:2B0s5s1}0u0`0r3t6U5y0=0_040Q3t6V320`6x2@6+6$016(6*656=0p1`043E0l016;6a6?0`0I6!6,0=0W0`0D3F766=0A6.0A6y3e7d720u0w0`2X7k5J7f046/0B6A7q5O79040h0D7x6K7t7h6:6_726@715J6{0`016D0.0A1J7L5O6(0I754t4%3%6c6e0s0V0u0l0c0h210s0S0E0B0E0C000)2r007u6A0s0B6N0B0@6N0j0+0p1@0+1?1Y840s6I4W7E6M6O6Q5w386#7l6Y7D4B0c0`2c7U3b6(0e6^2,7e7g7i0y8t3D7K7I7M6|6~708G7V748o3%7z7b0N8O418A7H2*8l5J7m7o1c4m8Y5O7s7|0m8T1}7z7B8-6-7F8B8D3%8F8y727N6}7 0X810h838K8{5J7W8;0=8!7F0k983c8V7j8L8u0`8x2}77018}6?816P0p949l6=978%9m6X040r6Z9x6=0l0h0`5,5;9v740F3A7!3^7$046f6h6j856n6p8b6s6u1P0C0u0X0+6q7~7G7v6B8d5m2;6L0j836P0x5B8k9y8n9D7J9j8^8U8?8W9u9 6)a11}9o6s9t9Ja67Y8X9m8Q7c9~7r9f8Cak5O9a7pao7E8+a81S9w4$9O1}9Q9S6i6k6m7S9X6r7*9!880N0R0k810j0X0N6H6J4B9=9@6Q5H9{6=9z9Cag9Ka79haVa39g958Ma*a/3baa7*ac2B9max2}8(3bai8Sasa,7uana(7l7n7A8$b6ala-7wb28P7o7Cbfa2b4av6%a0a+3%9o2%aNaPaRa_699674af3~az1SaB6gaD9VaG9*9Z2r8b8+0s2X0d0j0N0C0R0caMaT8ea,8g0$6Q5Ma!8m9A9d8`a5bcblbp3^b,ad8H7Oabbm7304bAb(5Jb09d8*9,b5a}9yb8arbb8)9fbec9a bh9d9a2Z0Cc1amb`b=a`6`8IbQbSbUaMbwa{bz9N9mbE9TaE9WbJaJbL6w9,7}2O6C1w6F0s1?6u876p000j7v8caU3.aW8h0x5Rb~ap9}cd8Eboa=b3c3cmc,b-5Oa@6 c:b|9dc0bj9;a-c4c%3baqbac58zbd8,c}1S8/bic*3%ch0ucjd93oclb:1}cnbxc?8I8 9193c_7Xcy6=bE7)7+7-2q7:7=7@7_2sbsaO6PaR0+bQ7GaQ9.cXa2b!9^5Vd13Da$c18q048sdlaw0`8wb`c28@di01c|ddbkc/d.d3ckd7c{cfd.d,a4b?a:9ke0a?8IdIbu0Ncva)b}6Tc67g9cd}dkc-8_c;e33D9odN6ydPe9ae0I9M7Zcz6d9R7(7*7,7.dD7?7^0y7`bNdr826i0+9%6C6E7SbX9:8=dT6Q5ZdWdec)d5720Ad!d$eib;d)e2coe#ehe!b 7aajd;c~b/e@1Sd^egd`d.dbd_e_c=9ia;f3emdq80eK25ducgb8e?e:cac c_e,doe47O7Q6Ferbyb|etdw72dyeAdB7/7;eEdG7{cI6B0B0ScN0p2G0h2x0j24aG0b189!0sf92vcO9q8b9/5-eT9?c!5%eX3^dYd}e%21c_d*d%djfie e=b1e`f=f2f)6Wc7d4f}8=auf@7Adcfgatd?e)dmeke-b@6}899rfqa:eb3g9|04020O0C0o9d9F0`aZgdgjeuayew7%dzeBdCfAdFeG0kfD7i7}860A880u0)eRf!f=eU6R9Ieca#eZg13of-g0gwf4f:gag2g9f6ejf5elbq8Ib_f;b{gka~3Dd:g7c.d-f`01e|h1d~9-d{g5fd0`cif1g-g;e*g:g(f77O2lgQgif47XgybBgAeycBbH6ocE6tcG9+gKfFf992eL6lcR220O0jgP2vgR469m7sgU3{cggZgXa6fkhOe/hegbhgflhi6}g@g+bnc`g48Rhch0g~def h/6zd8h1f0e}f|hhg/hWcp7OeJhDfbg^a|g!h2b81@efh1dfdhh4hYh~hfi08|g?0BhIhK84hmc+fsfu5JfwdAeCgFeFbLcOaMdJaQaSiB0.0s0%0)1O7`0X2/0H81cWbYcY04hQ8jhU8ZhTgl7eg$f/ikb.hdiY7yf^h@a.h;f*h?h|fEh78:i@h:hZd(h#9mbriDe7irg/g`ed9bi/d0iih!i)dp7OiK0y1O0x0MiQ7Ti6bzhp46bC6bex6fgCfyeDgGeHfE7~fHaG6vbLeQ0s0$hyfQ0 fYdRc~hQ9`i,d2i!g{3.i%jn04g*g.d=i|jRg|i.i{d j%h=8#i/cci;8.d|igf?h*b{jdfm6}0#eQj4hfj6a#ia0Aicj;g,j$h$h b`br18249sduftevdxjtezixgEdEiAgIbN0k7*84fa0p0KiH0BiJ0(jh1PgIiO0,jljH6o2lk5cNjE0uaQ0DhM4fd6hQgvi#b)a%k7g#8rf.jXjZi}f{i+kXe;04h.j*i:i8h3k!9ee~h`j?k^h5jakaijkc8Iktkffak0h!k2b7eej9fjl2jfkCjijk81l7i~l98Zk4k6i8k~ldg^9okP0XkRlkh+ho3K0Z670j2C2%lE5@1w5_2F2H2D1%1)2F0B1NlH0Z5^0|lU0$kC0p04.