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]] 

caracteristique est un objet de type list (ou tableau)

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)

Un dictionnaire en python est une sorte de liste mais au lieu d'utiliser des index (= des indices de position entiers positifs), on utilise des clés alphanumériques. On associe ainsi une clé à une valeur : clé : valeur

Régle 1 : Dans un dictionnaire, chaque clef est UNIQUE
Règle 2 : Chaque clef doit posséder une valeur

Bac à sable ...

Les commandes ci-dessous sont à RETENIR !
Tester les commandes ci-desssous :
Indiquer ci-dessous les réponses afficher par python :





Jouons à la marchande ...

Voici l'inventaire d'un magasin de fruits et légumes. La valeur associée à chaque clef est un couple ou tuple ( prix au kilo, stock restant en kilo)
stock={"bananes":24,
       "poires":12,
       "pommes":8,
       "kiwi":6}
Télecharger et compléter le 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])
    
#VILLES est un dictionnaire dont les clefs sont le NOM D'UNE VILLE à laquelle on a associé son code postale.
Demander à python :
  1. VILLES["Wingles"].
  2. le code postale de LENS.
  3. le code postale de votre ville
  4. le nombre de villes dans le Pas-de-Calais.

  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 ?

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 dde 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"]
    

  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 ?