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
.128013s3o_8;bcdufvg?/0lyq n7apSQr1-me,(P2=4Ctwki9][5hx)é6050j0F0N0x0Q0r0b0u0i0r0x0b0b0K010N0Q0y010406050b0k0E0E0x0B0s040z0d0r0k0@0d0v050p0~1012140|0y041d1k051n0p1n1p1k0|0j0Q0m0,0.0:0=0V0Q0n0V0r1D0V0N0`050%0h0r0F1y0/0;011C1E1G1E0N1M1O1K0N0h0d0j141L0B1l0N0V0,170b0y0x0v0=0J011Q1A010l0)0F0v0x0E0F1K1=1@1|1S1 1O22240`0a0u0I0B0d0y0d0b0Q1a0v0u0#1:0B0B0F0i2p1d270v1l0p1.2C0N1,1+1-0j290=1G0v212m1K1v1x0-1R2M0Q2O0v1(1w1K0y2v1l2A2C2*0}1?2q2U1}2Z0B110r0`0u0C2z2.0{2-282:1S2=2@2_0J2|1@2~2A2L01330x2^040u0c372B0|3a310=3d3f0u0L3j392.3b3p2_0U3t3l3v3n3c0d2?3e2_0Z3A2 2/1z323F343g0w3K3m3N3o3P3H3g0f3T3C3V3E3G3q0R3#303%3x040C0q3,3M2V3(3Q0C2{1e2}3B3-3^3/0C363}383 3@2;3X3f0C3i453k3L3w4a0`0C3s4e3u40493)4j3z4m474h4q3:3J4t4g3D423S4z3U414i3:3!4E3$4G4w0C3+4K4o3O4w0J3=4Q484S3Q0J3|2*4u4B4H0J444$4A3.4)4d4,4F4p4Z4l4;4L4?3Y0J4s4_4R3W4T4y4 4X514Z4D544v4Z4J594(4T4P5d4.4w0c4V5h4M3Q0c4#3~4-5n3Y0c4+5r4=4Y5u4:5x4`5z3f0c4^5C503_5u4~5I555K5F535N5a5u585S5e5o5c5W5i5o5g5!5t3f0L5l5(4{5*5q381m2(1d2S2F0j2J3b0i1(251l5^1o5?2,4m055}0#2)5D0=0i0C0`030u0A0k0F0*0u0b1b0N0u1O0+2Z0E0+0#0+1@0Q110k0W0u0m171@0N0+0o3?3w0`2v0t6i0N0F0e5:2B0u5s1}0d0`0K3t6U5y0=0_040T3t6V320`6x2@6+6$016(6*656=0b1`043E0E016;6a6?0`0S6!6,0=0P0`0l3F766=0v6.0v6y3e7d720d0O0`2X7k5J7f046/0x6A7q5O79040Q0l7x6K7t7h6:6_726@715J6{0`016D0.0v1J7L5O6(0S754t4%3%6c6e0u0M0d0E0h0Q210u0s0D0x0D0N000)2r007u6A0u0x6N0x0@6N0F0+0b1@0+1?1Y840u6I4W7E6M6O6Q5w386#7l6Y7D4B0h0`2c7U3b6(0H6^2,7e7g7i0r8t3D7K7I7M6|6~708G7V748o3%7z7b0B8O418A7H2*8l5J7m7o1c4m8Y5O7s7|0W8T1}7z7B8-6-7F8B8D3%8F8y727N6}7 0k810Q838K8{5J7W8;0=8!7F0j983c8V7j8L8u0`8x2}77018}6?816P0b949l6=978%9m6X040K6Z9x6=0E0Q0`5,5;9v740X3A7!3^7$046f6h6j856n6p8b6s6u1P0N0d0k0+6q7~7G7v6B8d5m2;6L0F836P0e5B8k9y8n9D7J9j8^8U8?8W9u9 6)a11}9o6s9t9Ja67Y8X9m8Q7c9~7r9f8Cak5O9a7pao7E8+a81S9w4$9O1}9Q9S6i6k6m7S9X6r7*9!880B0Y0j810F0k0B6H6J4B9=9@6Q5H9{6=9z9Cag9Ka79haVa39g958Ma*a/3baa7*ac2B9max2}8(3bai8Sasa,7uana(7l7n7A8$b6ala-7wb28P7o7Cbfa2b4av6%a0a+3%9o2%aNaPaRa_699674af3~az1SaB6gaD9VaG9*9Z2r8b8+0u2X0m0F0B0N0Y0haMaT8ea,8g0$6Q5Ma!8m9A9d8`a5bcblbp3^b,ad8H7Oabbm7304bAb(5Jb09d8*9,b5a}9yb8arbb8)9fbec9a bh9d9a2Z0Nc1amb`b=a`6`8IbQbSbUaMbwa{bz9N9mbE9TaE9WbJaJbL6w9,7}2O6C1w6F0u1?6u876p000F7v8caU3.aW8h0e5Rb~ap9}cd8Eboa=b3c3cmc,b-5Oa@6 c:b|9dc0bj9;a-c4c%3baqbac58zbd8,c}1S8/bic*3%ch0dcjd93oclb: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?8IdIbu0Bcva)b}6Tc67g9cd}dkc-8_c;e33D9odN6ydPe9ae0S9M7Zcz6d9R7(7*7,7.dD7?7^0r7`bNdr826i0+9%6C6E7SbX9:8=dT6Q5ZdWdec)d5720vd!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{cI6B0x0scN0b2G0Q2x0F24aG0y189!0uf92vcO9q8b9/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|04020n0N0g9d9F0`aZgdgjeuayew7%dzeBdCfAdFeG0jfD7i7}860v880d0)eRf!f=eU6R9Ieca#eZg13of-g0gwf4f:gag2g9f6ejf5elbq8Ib_f;b{gka~3Dd:g7c.d-f`01e|h1d~9-d{g5fd0`cif1g-g;e*g:g(f77O2lgQgif47XgybBgAeycBbH6ocE6tcG9+gKfFf992eL6lcR220n0FgP2vgR469m7sgU3{cggZgXa6fkhOe/hegbhgflhi6}g@g+bnc`g48Rhch0g~def h/6zd8h1f0e}f|hhg/hWcp7OeJhDfbg^a|g!h2b81@efh1dfdhh4hYh~hfi08|g?0xhIhK84hmc+fsfu5JfwdAeCgFeFbLcOaMdJaQaSiB0.0u0%0)1O7`0k2/0V81cWbYcY04hQ8jhU8ZhTgl7eg$f/ikb.hdiY7yf^h@a.h;f*h?h|fEh78:i@h:hZd(h#9mbriDe7irg/g`ed9bi/d0iih!i)dp7OiK0r1O0e0iiQ7Ti6bzhp46bC6bex6fgCfyeDgGeHfE7~fHaG6vbLeQ0u0$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#ia0vicj;g,j$h$h b`br18249sduftevdxjtezixgEdEiAgIbN0j7*84fa0b0GiH0xiJ0(jh1PgIiO0,jljH6o2lk5cNjE0daQ0lhM4fd6hQgvi#b)a%k7g#8rf.jXjZi}f{i+kXe;04h.j*i:i8h3k!9ee~h`j?k^h5jakaijkc8Iktkffak0h!k2b7eej9fjl2jfkCjijk81l7i~l98Zk4k6i8k~ldg^9okP0kkRlkh+ho3K0p670F2C2%lE5@1w5_2F2H2D1%1)2F0x1NlH0p5^0|lU0$kC0b04.