CPGE OUJDA                                                                                                                        SUP

 

Dictionnaires

 

 

Un dictionnaire est un un type de données mutable.

 

À la difrence des listes et des strings qui sont ordonnées et indexées par intervalle numérique, les dictionnaires sont non ordonnés et indexés par des clefs.

Un dictionnaire est un ensemble non ordonné de couples

clef-valeur.

 

>>>  phone  =  {}

>>>  phone["Gary"]  =  3766

>>>  phone["Thierry"]  =  5603

>>>  phone["Alain"]  =  1234

>>>  print(phone)

{'Gary':  3766,  'Alain':  1234,  'Thierry':  5603}

 

Les clefs doivent être immutables (nombres, chaînes, tuples). Les valeurs peuvent être de n’importe quel type.

Opérations sur les dictionnaires

 

 

 

 

>>>  phone.items()                           #  Liste  des  éléments  (paires)

dict_items([('Gary',  3766),  ('Alain',  1234),  ('Thierry',  5603)])

>>>  phone.keys()                             #  Itérateur  contenant  les  clef

dict_keys(['Alain',  'Thierry',  'Gary'])

>>>  list(phone.keys())               #  Liste  des  clefs

['Alain',  'Thierry',  'Gary']

>>>  phone.values()                          #  Itérateur  des  valeurs

dict_values([1234,  5603,  3766])

>>>  list(phone.values())           #  Liste  des  valeurs

[1234,  5603,  3766]

>>>  for  key  in  phone:              #  Itération

...    print(key  +  ":  "  +  str(phone[key]))

...

Alain:  1234

Thierry:  5603

Gary:  3766

 

>>>  "Gary"  in  phone                     #  Test  d'existence  de  clef

True

>>>  del  phone["Thierry"]       #  Suppression

>>>  print(phone)

{'Alain':  1234,  'Gary':  3766}

>>>  print(phone["Thierry"])  #  Clef  inexistante  ->  Erreur

 

...KeyError:  'Thierry'

>>>  print(phone.get("Thierry"))    #  Clef  inexistante  ->  None

None

>>>  print(phone.get("Thierry",  1307))  #  Clef  inexistante  ->  ...

1307                                                 #  Valeur  choisie

#  (renseignements)

Exemple d’utilisation

 

 

 

def  occurrences(word):

dic  =  {}

for  char  in  word:

dic[char]  =  dic.get(char,  0)  +  1

return  dic

 

print(occurrences("banane"))

 

Affiche

 

{'a':  2,  'b':  1,  'e':  1,  'n':  2}

 

 

 

Exercices :

 

 

Ex. 1.  Écrire une fonction qui renvoie un dictionnaire composé du nombre d’occurrences de tous les mots de 2 lettres (AA, AC, AG, . . . ) qui existent dans une séquence nucléotidique.

Exemple :

 

>>>  dico  =  occurrences_of_2_char("ACCTAGCCATGTAGAATCGCCTAGGCTTTAGCTAGCTCTAGCTAGCTG")

>>>  print(dico)

{'AA':  1,  'AC':  1,  'GT':  1,  'AG':  7,  'CC':  3,  'CA':  1,  'CG':  1,

'TT':  2,  'GG':  1,  'GC':  7,  'AT':  2,  'GA':  1,  'TG':  2,  'CT':  8,

'TC':  2,  'TA':  7}

 

 

Ex. 2.  Écrire une fonction qui affiche un dictionnaire de la façon suivante :

 

Key  :  GT  -  Value  :  1

Key  :  CT  -  Value  :  8

...

 

Bonus : afficher les clefs dans l’ordre alphabétique.