LES DICTIONNAIRES




Introduction

Reprenons 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 :


Jouons à la marchande ...

  1. Ouvrir et compléter le fichier python 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