Opérations sur les tables

Signaler

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.

PB_Bac_05230_numerique1_TT_p111-136_C04_Groupe_Schema_6

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.

PB_Bac_05230_numerique1_TT_p111-136_C04_Groupe_Schema_7

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 :

PB_Bac_05230_numerique1_TT_p111-136_C04_Groupe_Schema_2

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 :

PB_Bac_05230_numerique1_TT_p111-136_C04_Groupe_Schema_3

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.

PB_Bac_05230_numerique1_TT_p111-136_C04_Groupe_Schema_4

Exemple : Pour trier dans l’ordre décroissant la table Table1 selon les notes de maths, on fera :

PB_Bac_05230_numerique1_TT_p111-136_C04_Groupe_Schema_5

Qui donne :

 

Nom

Maths

Info

Anglais

0

Zoé

19

17

15

1

Joe

16

18

17

2

Max

14

13

19