• Aucun résultat trouvé

Algorithmique et Programmation 1 Dictionnaires

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithmique et Programmation 1 Dictionnaires"

Copied!
10
0
0

Texte intégral

(1)

Algorithmique et Programmation 1

Dictionnaires

Licences Informatique et Mathématiques 1ère année

Premier semestre 2014 – 2015

(2)

Les dictionnaires

Comment résoudre efficacement les problèmes suivants ?

I Compter le nombre d’occurrences de chaque mot dans un texte

I Rassembler plusieurs informations concernant une personne (nom, âge, numéro de sécurité sociale, profession, liste d’enfants...) et les passer en argument à une fonction

I Représenter les coefficients d’une matrice ou d’un polynôme

“creux”

I Mémoriser les valeurs de retour d’une fonction pour différents arguments

Nouveau type de données : lesdictionnaires(dict)

(3)

Les dictionnaires

Comment résoudre efficacement les problèmes suivants ?

I Compter le nombre d’occurrences de chaque mot dans un texte

I Rassembler plusieurs informations concernant une personne (nom, âge, numéro de sécurité sociale, profession, liste d’enfants...) et les passer en argument à une fonction

I Représenter les coefficients d’une matrice ou d’un polynôme

“creux”

I Mémoriser les valeurs de retour d’une fonction pour différents arguments

Nouveau type de données : lesdictionnaires(dict)

(4)

Les dictionnaires

Dictionnaire :

I Objet associant une liste de clés(keys) à desvaleurs (values)

>>> vide = {} # dictionnaire vide

>>> vide = dict() # idem

>>> effectif_groupes = {’a’: 31, ’b’: 28, ’c’: 33,

. . . 9: 18, ’Prépa’: 22}}

>>> effectif_groupes[’c’]

33

>>> ’Prépa’ in effectif_groupes True

I Clés : doivent être non-modifiables (immutable)

>>> {[] : 0}

TypeError: unhashable type: ’list’

I Valeurs : de type quelconque (même mutables)

(5)

Dictionnaires vs. listes

I Insertion et suppression en général (beaucoup) plus rapides

I Accès en généralpresque aussi rapide

I Collection mutableset hétérogènesmaisnon ordonnées

>>> d = {’a’:1, ’b’:True, ’c’: ’salut’}

>>> print(d)

{’b’: True, ’a’: 1, ’c’: ’salut’}

>>> d[’b’] = 3.1415

>>> print(d)

{’b’: 3.1415, ’a’: 1, ’c’: ’salut’}

I Pas de problème de dépassement d’indice

>>> d[99] = [1, 2, 3, ’nous irons. . .’]

>>> print(d)

{99: [1, 2, 3, ’nous irons. . .’], ’b’: True, . . .

(6)

Dictionnaires vs. listes

I Objets itérables

>>> for cle in d:

. . . print(cle, ’->’, d[cle])

. . .:

99 -> [1, 2, 3, ’nous irons. . .’]

b -> 3.1415 a -> 1 c -> salut

I Peuvent être imbriqués

>>> d2 = {’type’: ’un dico’, ’contenu’: d, ’réponse’: [42]}

>>> print(d2)

{’contenu’: {99: [1, 2, 3, ’nous irons. . .’],

’b’: 3.1415,

’a’: 1,

’c’: ’salut’},

’réponse’: [42],

’type’: ’un dico’}

(7)

Les dictionnaires : opérations

d = {} Création

d = dict()

d = {’a’: 1, ...}

d[cle] Accès

d[cle1][cle2]

len(d) Taille

cle in d Test d’appartenance cle not in d

d[cle] = valeur Ajout ou modification del d[cle] Suppression

(8)

Les dictionnaires : méthodes

d.keys() Accès aux clés d.values() Accès aux valeurs

d.items() Accès aux paires(cle, valeur)

d.copy() Copie

d.clear() Vidange

d.get(cle, defaut) Accès avec valeur par défaut d.pop(cle) Retrait de valeur

d.update(d2) Mise à jour / fusion etc.

(9)

Un exemple

Comptage de lettres

def compte_lettres(chaine):

d = dict()

for car in chaine:

n = d.get(car, 0) d[car] = n + 1 return d

if __name__ == ’__main__’:

s = input()

print(compte_lettres(s))

(10)

Un autre exemple

Carte de visite

def affiche_carte(carte):

print("Bonjour,")

print("Je m’appelle", carte[’prenom’], carte[’nom’], end=’.\n’)

print("Je suis né en", carte[’annee’],

"sous", carte[’president’], end=’.\n’)

print("Mon adresse email est", carte[’email’], end=’.\n’)

if __name__ == ’__main__’:

carte = {’prenom’: ’Antoine’,

’president’: "Valéry Giscard d’Estaing",

’annee’: 1980,

’nom’: ’Meyer’,

’email’: ’<antoine.meyer@u-pem.fr>’}

affiche_carte(carte)

Références

Documents relatifs

Quel aurait été le prix payé par Diego s’il avait bénéficié d’une réduction de 56 % sur les deux

Participer aux projets ayant trait à la création du département de pathologie Bichat-Beaujon : Participer ponctuellement à l’activité technique sur le site de Beaujon selon

temporaire de fonctionnaires ou d'agents contractuels autorisés à exercer leurs fonctions à temps partiel ou indisponibles en raison d'un détachement de courte durée,

4-Tout joueur autorisé à jouer dans une équipe (conformément à à l’article 14 alinéa 3 et à l’article 15 alinéas 1 à 3) peut participer à une rencontre pour cette équipe

Votre programme sera effacé dès que vous ouvrirez la porte du compartiment du disque, ou si vous passez à un autre mode source (par exemple, radio, cassette) ou bien si vous pressez

I On peut répéter un bloc d’instructions grâce à une boucle “tant que” :. I Si une certaine condition est vraie, exécuter un

SPOROZOAIRES D'ARTHROPODES D’IRAN 27 Nous avions déjà signalé un cas tératologique analogue chez une autre Grégarine : Didymophyes guttiformis Cordua (Théodoridès

Question 2 Ecrivez (en modifiant l´eg`erement votre fonction pr´ec´edente) la fonction decomp tab qui remplit un tableau avec les n premiers coefficients de la d´ecomposition