Une fois les données indexées, il faut les exploiter.
La première exploitation est bien sur la recherche de données. Voici une fonction de recherche de données :
def recherche(donnees, clef_rech, val_rech, clef_aff):
"""
donnees : tableau de dictionnaires contenant les données
clef_rech : clef à laquelle appartient la valeur recherchée
val_rech : valeur recherchée
clef_aff : clef de la valeur que l'on veut afficher
"""
for element in donnees:
if element[clef_rech] == val_rech:
return element[clef_aff]
Vous ne voyez peut-être pas la différence entreclef_rech
et clef_aff
, nous allons donc mener quelques recherches :
index_dico
et la fonction recherche
.recherche
, rechercher :
La fonction précédente n'est en fait pas très "robuste". Nous allons donc tenter de la mettre en échec :
Il va donc falloir gérer les doublons dans nos recherches.
Pour cela nous allons devoir construire un tableau contenant toutes les réponses à une recherche pour regrouper les éventuels doublons.
Une des solutions "élégante" et compacte est d'utiliser la création de tableau par compréhension.
En testant et le code ci-dessous puis en s'en inspirant :
tabDico = [{'couleur':'rouge','nom':'chaperon'},{'couleur':"bleue",'nom':'Les Schtroumpfs'},{'couleur':'vert','nom':'martien'}]
resultat=[r['nom'] for r in tabDico if r['couleur']=='vert']
print (resultat)
recherche2(donnees, clef_rech, val_rech, clef_aff)
qui renvoie le tableau des réponses à la recherche. Nous avons, jusque là, effectué des recherches "simples" sur un seul critère.
Dans la pratique les recherches sur les bases de données sont souvent multicritères.
Par exemple : "Rechercher les pays de la zone euro dont la population est inférieure à 100 000 habitants" .
[p['name'] for p in tabDico if int(p['population'])<1000 or float(p['area'])>10000000)]
rechercheA(donnees)
qui renvoie la liste des pays de la zone Euro dont la population est inférieure à 100 000 habitantsrechercheB(donnees)
qui renvoie le nom des pays dont la monnaie est le Dollar et dont la superficie est supérieure à 9000000 km² Quand on gère une grande quantité de données, la difficulté est de maintenir constamment la cohérence des données.
En effet des erreurs peuvent apparaître lors de la saisie ou de la mise à jour des données.
Pour cela il est nécessaire de faire des tests de cohérence régulièrement sur les données.
La cohérence des données contenues dans une table peut porter sur différents points :
Les données contenues dans le fichier dont vous disposez comportent deux erreurs de cohérence.
Vous devez :
coherenceA(donnees)
permettant de détecter une incohérence de domaine sur le champ capital
qui doit contenir le code de la ville capitale du pays concerné.coherenceB(donnees)
permettant de de détecter une incohérence de contenu sur le champ continent
.