Aller au contenu

Dictionnaires : Atlas Mondial

L'usage de la calculatrice n'est pas autorisé

Durée: 1h

On considère un dictionnaire dont les clés sont les noms des pays et les valeurs sont une liste de données pour chaque pays.

Notre dictionnaire s'appelle atlas et il contient les données suivantes:

Pays Capitale Population PIB par hab Émissions de CO2 par personne Inégalité des revenus
France Paris 67 348 000 44 032 5,0 32,7
Royaume-Uni Londres 66 040 229 44 920 5,7 33,2
Italie Rome 59 499 534 40 923 6,1 35,4
Allemagne Berlin 82 793 800 52 555 9,6 31,7
Japon Tokyo 126 440 000 42 066 10,4 32,1
États-Unis Washington D.C. 329 035 000 59 927 15,5 41,5
Canada Ottawa 37 067 000 46 509 16,7 34,0

Question 1

Donner une instruction qui permet de rajouter le Maroc Ă  ce dictionnaire.

Population : 35 361 000

PIB par habitant : 8 225

Émissions de CO2 par personne : 1,7

Indice d'inégalité des revenus : 39,5

Corrigé
atlas['Maroc']=['Rabat',35361000,8225,1.7,39.5]

Question 2

Donner une instruction qui retourne la liste des Capitales.

Corrigé
[atlas[pays][0] for pays in atlas]

Question 3

Donner une instruction qui retourne le total d'Ă©mission de CO2 pour un pays pays quelconque.

Corrigé
atlas[pays][1]*atlas[pays][3]

Question 4

Écrire une fonction qui modifie le dictionnaire atlas en ajoutant à chaque pays une valeur qui correspond au total d'émission du pays.

Corrigé
def modif(D):
  for elt in D:
    D[elt].append(D[elt][1]*D[elt][3])

modif('atlas')

Question 5

Écrire une fonction maxem(D) qui retourne, à partir d'un dictionnaire D, le nom du pays dont les émissions de CO2 par habitant sont les plus élevées.

Corrigé
def maxem(D):
  maxP=''
  maxV=0
  for elt in D:
    if D[elt][3]>maxV:
      maxV=D[elt][3]
      maxP=elt
  return maxP

Question 6

Écrire une fonction retourne(D) qui renvoie, à partir d'un dictionnaire comme atlas, un dictionnaire qui admet pour clés les noms des capitales et pour valeurs les noms des pays.

Corrigé
def retourne(D):
  newD={D[elt][0]:elt for elt in D}
  return newD

ou bien

def retourne(D):
  newD={}
  for elt in D:
    newD[D[elt][0]]=elt
  return newD

Question 7

On souhaite modifier notre dictionnaire pour que le PIB par habitant, qui est donné dans le tableau en dollars, soit à présent donné en dirhams. Écrire une fonction conversion(D) qui permet de faire cette transformation. Au taux actuel: 1 dollar = 10 dirhams

Corrigé
def conversion(D):
  for elt in D:
    D[elt][2]=D[elt][2]*10
  return D

Question 8

On a deux dictionnaires atlas1 et atlas2 qui contiennent, à eux deux, l'ensemble des données de tous les pays de la planète. Écrire une fonction pollupas(D1,D2) qui retourne une liste qui contient les noms des 5 pays qui polluent le moins.

Corrigé

On suppose nos 2 dictionnaires modifiés grâce à la question 4.

On commence par Ă©crire une fonction qui retourne le nom du pays qui pollue le moins.

def minem(D):
  minP=''
  minV=10000000000
  for elt in D:
    if D[elt][5]<minV:
      minV=D[elt][5]
      minP=elt
  return minP


def pollupas(D1,D2):
  D1.update(D2)
  D3=D1.copy()
  res=[]
  for i in range(5):
    pays=minem(D3)
    res.append(pays)
    del D3[pays]
  return res