LES DICTIONNAIRES




Introduction

Repronons les caractéristiques du TP sur les combats de héros :

caracteristique=[["Ahri",5,3,7],["Corki",9,3,3],["Azir",4,4,4],["Braum",5,2,7],["Ashe",4,2,13]] 

Avantages ? Inconvénients ?

On peut ausi organiser ces données sous la forme d'un dictionnaire. Ce qui donne :
caracteristique={"Ahri": (5,3,7),"Corki" : (9,3,3), "Azir":(4,4,4),"Braum" : (5,2,7),"Ashe" : (4,2,13)} 

"Ahri," Corki", Azir", "Braum" et "Ashe" sont apellés les CLEFS du dictionnaire.

A chacune des CLEFS , on a associé une VALEUR

"La clef "Corki" est associé à la valeur (9,3,3)

Régle 1 : Dans un dictionnaire, chaque clef est UNIQUE
Règle 2 : Chaque clef doit posséder une valeur
Règle 3 : La clefs doit être un objet immuable.

Bac à sable ...

Les commandes ci-dessous sont à RETENIR !
Dans la console python, tester les commandes ci-desssous :


Pèches, pommes, poires, abricot , ....

Voici l'inventaire d'un magasin de fruits et légumes. La valeur associée à chaque clef est le stock restant en kilo.
inventaire={ "peches" : 40, 'pommes' : 50, 'topinambours' : 23 , 'pimprenelle' : 6, 'crosnes' : 3}
  1. Ouvrir un fichier python magasin.py et y copier le dictionnaire inventaire
  2. Que permet de faire la commande :
     inventaire['chou-rave']=100 
  3. Ajouter 5kg de 'nefles'.
  4. Que permet de faire la commande :
     inventaire['pommes']=inventaire['pommes']+15 
  5. Ajouter 3kg de 'crosnes'.
  6. Avec python, afficher le nombre de produits différents.
  7. Ecrire un script qui affiche la liste des produits présents dans le magasin.
  8. Ecrire un script qui affiche un bilan sous la forme :
  9. Il y a 40 kg de peches.
    Il y a 50 kg de pommes.
    ...
    
  10. Compléter et tester la fonction ci-dessous :
  11.  def bilan(inventaire):
    	"""
    	Renvoie la masse de tout le stocke
    	param inventaire : (dict)
    	return recette : (float)
    	"""
    	masse=0
    	for ....
    
    
    
    
    	return masse
    

A mettre dans votre fichier magasin.py


Attention 62 !


Le fichier CPville62.csv contient la liste des villes du Pas-De-Calais(en majuscules) avec leur code postale.

La commande ci-dessous, permet à partir du fichier csv de créer un dictionnaire Ville avec pour clef, le nom de la ville et pour valeur, le code postal.

Créer un fichier codepostale62.py contenant le code ci-dessous :

 
import csv
#Ouverture du fichier csv
lecture =csv.reader(open("CPville62.csv", newline=''))
#Construction du dictionnaire
VILLES={}
for elt in lecture:
    VILLES[elt[0]]=int(elt[1])
    
Demander à python :
  1. le code postale de WINGLES.
  2. le code postale de LENS.
  3. le nombre de villes dans le Pas-de-Calais.

A mettre dans votre fichier codepostale62.py
  1. Compléter la fonction ci-dessous :
  2.  def RechercheCP(MaVille):
    	""" 
    	Renvoie le code postal de  Maville
    	param Maille : (str) en majuscule
    	return codePostal : (int)
    	C.U : Le dictionnaire VILLES doit avoir été déclaré
    	"""
    
    
    
    	return codePostal
    
  3. Tester avec RechercheCP("Wingles"):
  4. Compléter la fonction ci-dessous :
  5. def RechercheVille(CodePostal):
       """
       Renvoie la liste des villes dont le code postal est donné en parametre.
       param CodePostale : (int)
       return ListeVille : (list)
       C.U : Le dictionnaire VILLES doit avoir été déclaré
       """
    		
       ListeVille=[]
       for 
    
    
    
    
       return ListeVille
    
  6. Tester avec :
  7. >>> RechercheVille(62880)
    >>> RechercheVille(62300)
    
  8. BONUS : Quel est le code postal qui référence le plus de villes différentes ?

A mettre dans votre fichier codepostale62.py

Juste Leblanc

Le fichier patronyme.csv contient contient les noms attribués au moins 30 fois de 1891 à 2000 en France (métropole et Dom) de 1891 à 2000. ( source INSEE ) Les noms ayant moins de 30 attributions n'ont pas été pris en compte.

La commande ci-dessous, permet à partir du fichier csv de créer un dictionnaire PATRONYMES avec pour clef, le nom et pour valeur, le nombre d'attribution depuis 1891.

import csv
#Ouverture du fichier csv
lecture =csv.reader(open("patronymes.csv", newline=''))
#Construction du dictionnaire
PATRONYMES={}
for elt in lecture:
    PATRONYMES[elt[0]]=int(elt[1])

Créer un fichier patronymes.py contenant le code ci-dessus :

Demander à Python :
  1. Combien de fois votre nom a t-il été attribué depuis 1891 ?
  2. Combien y a t-il de DUPOND ?
  3. Combien y a t-il de DUPONT ?
  4. Combien y a t-il de TINTIN ?
  5. Combien y a t-il de MILOU ?
  6. Combien y a t-il de HADDOCK ?

Remarque : La dernière manip provoqe une erreur ( KeyError) , on dit que python léve un exception.

Comment gérer une exception prévisible ?

try :
  code exécuté si tout va bien
except :
  code exécuté en cas d'exception
Exemple :
NOM='HADDOCK'
try : 
    MesNoms[NOM]
except KeyError:
    print("le nom " + NOM + " n'est pas présent dans le dictionnaire.")
  1. Combien y a t-il de patronymes différents ?
  2. Compléter la fonction ci-dessous :
  3.  def AJOUTER(NOM):
    	"""
    	Ajoute 1 à la valeur correspondant à la cle NOM 
    	Si NOM n'est pas présent, il est alors ajouté au dictionnaire.
    	param NOM: (str)
    	return PATRONYMES : (dict)
    	"""
    
    	return PATRONYMES
    
  4. Tester avec les commandes :
  5. >>> AJOUTER('HADDOCK')
    >>> PATRONYMES('HADDOCK')
    >>> PATRONYMES["ALCAZAR"]
    >>> AJOUTER('HADDOCK')
    >>> PATRONYMES["ALCAZAR"]
    

A mettre dans votre fichier patronymes.py
  1. Compléter la fonction ci-dessous :
  2.  def NOM_POPULAIRES():
      """
      Renvoie un dictionnaire des NOMS  qui ont été attribué plus de 50000 fois.
      param : None
      return populaire : (dict)
      C.U : Le dictionnaire PATRONYMES doit avoir été déclaré
      """
      populaire={}
    
      return populaire
    
  3. Quels sont les 3 noms les plus populaires ?

A mettre dans votre fichier patronymes.py