A) Recherche dans une table de dictionnaires

On désire extraire par recherche des éléments de ce tableau
concernant les caractéristiques de smartphones
L’idée ici est d’apprendre à extraire des données cibles, les manipuler, les trier ou faire des statistiques. Ces opérations sont nommées "requêtes".

Sur ces quelques données de comparaison



1) Créer un fichier au format CSV


Comma-separated values, connu sous le sigle CSV, est un format texte ouvert représentant des données tabulaires sous forme de valeurs séparées par des virgules. Ce format n'a jamais vraiment fait l'objet d'une spécification formelle. Toutefois, la RFC 41801 décrit la forme la plus courante et établit son type MIME « text/csv », enregistré auprès de l'IANA.



Créer sous un tableur puis exporter au format CSV avec séparateur ";" le tableau ci-dessous

(Enregistrer sous autre format ,  (liste déroulante CSV sous LibvreOffice, CSV DOS sous Excel)


sous le nom de fichier : telport avec extension format fichier .csv

(Attention, sous l'explorateur windows l'extension de fichier peut être ensuite non affiché, et le fichier apparaît comme telport tout court (csv file))

Vérifiez - comme ci-dessous, c'est correct





2) Importer et extraire une donnée d'un CSV


Dans l'éditeur Python ensuite, créer un fichier et enregistrez-le en le nommant :  traitementA.py 

Réaliser l'ouverture du fichier telport.csv et son import en dictionnaires dans une table (type "list")

import csv
fichier=open("telport.csv", encoding='utf8')
table=list(csv.DictReader(fichier,delimiter=";"))
print(table)
fichier.close()


Résultat  (si le résultat n'est pas celui-ci, essayer de changer le delimiter ci dessus pour la virgule "," suivant le tableur utilisé)

[{'Nom': 'A20e', 'Capacité batterie': '3000', 'A P N': '13', 'RAM': '3', 'Stockage': '32', 'Taille': '5.8', 'Prix': '154.5'}, {'Nom': 'A40', 'Capacité batterie': '3100', 'A P N': '16', 'RAM': '4', 'Stockage': '64', 'Taille': '5.9', 'Prix': '249.97'}, {'Nom': 'A50', 'Capacité batterie': '4000', 'A P N': '25', 'RAM': '4', 'Stockage': '128', 'Taille': '6.4', 'Prix': '274.95'}, {'Nom': 'A70', 'Capacité batterie': '4500', 'A P N': '32', 'RAM': '6', 'Stockage': '128', 'Taille': '6.7', 'Prix': '384.3'}, {'Nom': 'A80', 'Capacité batterie': '3700', 'A P N': '48', 'RAM': '8', 'Stockage': '128', 'Taille': '6.7', 'Prix': '499'}]


2-a) Expliquer et inclure sur votre compte rendu la capture de ce que renvoie :

               print("table ligne 1",table[1])


2-b) Expliquer et inclure sur votre compte rendu la capture de ce que renvoie :

               print (table[3]['A P N'])


3) Savoir Faire / Tester

On cherche à créer une nouvelle table en extrayant d’une table donnée les lignes satisfaisant une condition fournie.

Projection

Une projection est la sélection d’un ou de plusieurs attributs (colonnes) d’une table.


On cherche par exemple à sélectionner les noms des téléphones, on va donc projeter sur une colonne :

# Dans l'éditeur
t1=[ligne["Nom"] for ligne in table]
print(t1)


Vérifier


Projection et sélection
EXEMPLE : On cherche à sélectionner les appareils avec un APN de plus de 16 Mpx (strictement supérieur).
La sélection sur une colonne peut être combinée à la sélection d’un ensemble de lignes.
La rédaction sera :

t2=[ligne["Nom"] for ligne in table if int(ligne["APN"])>16]
print("Appareil Photo",t2)



4) Réaliser des requêtes 


à faire par vous-même

En utilisant les méthodes de projection et sélection

4-a) construire un tableau t3 contenant les téléphones ayant au moins 4 Go de RAM et un stockage de 128 Go ;
4-b) construire un tableau t4 contenant les téléphones faisant au moins 4000mAh  ou un APN d'au moins 32 MPix.


4-c) construire un tableau t5 contenant le(s) téléphone(s)  ayant au moins 4 Go de RAM et coûtant moins de 400€ et une taille de moins de 6,5 pouces

Aide : utiliser float pour le tableau t5 au lieu de int (puisque prix et taille sont des valeurs décimales)

t5 renvoie deux modèles de téléphones


5) Algorithme de recherche 


fonction avec arguments : valeur, dictionnaire

def appartientdico (v,listedico):

    for x in ... :

        if ...["..."] == v:

            return v,True

    return v,False


print(appartientdico('A70',table)) doit renvoyer ('A70', True)

print(appartientdico('S20',table)) doit renvoyer ('S20', False)                (ces retours sont des tuples)


Joindre la capture

Créé avec HelpNDoc Personal Edition: Produire des livres EPub gratuitement