Une fois que l’on dispose des données en table, on a accès à toute la palette de commandes du langage de programmation utilisé. On peut donc créer des outils de manipulation des tables, comme la recherche et le tri.
I. Sélection de lignes vérifiant un critère
Repère
Mot clé
Les opérateurs booléens habituels sont <, >, <=, >=, ==, !=, in, not, and, or, is….
On cherche à créer une nouvelle table en extrayant d’une table les lignes satisfaisant une condition donnée sous la forme d’une fonction booléenne.
Pour illustrer cette recherche, on crée la fonction select ci-dessous qui prends en paramètre une table (table, une liste de dictionnaires) et un critère de sélection (critère) sous forme d’une chaîne de caractères contenant un test booléen prenant une ligne en argument. La fonction renvoie une liste construite par compréhension avec un filtre qui ne contient que les lignes de la table qui satisfont le critère donné en argument.
Exemple : Reprenons le tableau de la fiche 17.
Nom |
Anglais |
Info |
Maths |
Joe |
17 |
18 |
16 |
Zoé |
15 |
17 |
19 |
Max |
19 |
13 |
14 |
Pour sélectionner les élèves ayant plus de 16 en maths, on utilise la fonction eval qui permet d’évaluer l’expression contenue dans la cellule ligne['Maths'] sous forme d’une chaîne de caractères en un entier.
Et on obtient bien uniquement la ligne satisfaisant le critère :
[{'Nom': 'Zoé', 'Anglais': '15', 'Info': '17', 'Maths': '19'}]
II. Sélection de colonnes
Pour sélectionner un ou plusieurs attributs (colonnes) d’une table (cette opération s’appelle « projection » dans le langage des bases de données), on va créer une nouvelle table qui ne contiendra que ces attributs :
Dans notre exemple, on veut ne retenir que les notes d’info et le nom des élèves. Pour obtenir la table attendue, on entre :
On obtient :
[{'Nom': 'Joe', 'Info': '18'}, {'Nom': 'Zoé', 'Info': '17'}, {'Nom': 'Max', 'Info': '13'}]
Qui modélise le tableau :
Nom |
Info |
Joe |
18 |
Zoé |
17 |
Max |
13 |
III. Tri d’une table selon une colonne
Puisqu’une table est représentée par une liste, on peut la trier en utilisant la fonction de tri sorted qui dispose d’un argument key permettant de préciser selon quel critère une liste doit être triée (qui doit être une fonction de variables les objets à trier). Un troisième argument, reverse (un booléen), permet de préciser si l’on veut le résultat par ordre croissant (par défaut) ou décroissant (en précisant reverse=True).
On peut alors créer une fonction tri qui trie n’importe quelle table en donnant l’attribut choisi pour le tri et en précisant si l’on veut obtenir le tri dans l’ordre décroissant.
Exemple : Pour trier dans l’ordre décroissant la table Table1 selon les notes de maths, on fera :
Qui donne :
Nom |
Maths |
Info |
Anglais |
|
0 |
Zoé |
19 |
17 |
15 |
1 |
Joe |
16 |
18 |
17 |
2 |
Max |
14 |
13 |
19 |