Bonjour j'ai un petit problème concernant les dictionnaires
Comment fait_on pour ajouter une valeur à un dictionnaire sans écraser la valeur??????
append ne fonctionne pas, avez vous une idée?
merci pour l'aide
Bonjour j'ai un petit problème concernant les dictionnaires
Comment fait_on pour ajouter une valeur à un dictionnaire sans écraser la valeur??????
append ne fonctionne pas, avez vous une idée?
merci pour l'aide
Peux-tu poster un exemple de ce qui te pose problème ?
Bonjour,
append à quoi ? On ne fait append que sur une liste. Si la valeur référencée par une clé n’est pas une liste, on ne peut pas faire append.
Si tu veux qu’une clé référence une valeur supplémentaire sans perdre la valeur qu’elle référençait déjà, il faut remplacer la valeur initiale par un conteneur.
Ce qui suit répond-il à ton problème ? :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 d = {1:'abc',12:'nono',33:'barique'} print d d[12] = (d[12],'maree') print d
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 {1: 'abc', 12: 'nono', 33: 'barique'} {1: 'abc', 12: ('nono', 'maree'), 33: 'barique'}
désolé je me suis mal exprimé
voilà un exemple :
{'Mai_Sud_2010': 43}
comment peut on obtenir {'Mai_Sud_2010': 43,60}?
merci pour l'aide
peut être que l'on peut contourner mon problème
est il possible entre deux dates :
il y a 94 joursdate : [datetime.datetime(2010, 2, 2, 0, 0), datetime.datetime(2010, 5, 6, 12, 0)]
est il possible d'avoir ces 94 jours par nombre de jours dans le mois soit en réponse :
28 ,31 ,30 et 5 qui correspond à 28 jours en février, 31 jours en mars, 30 jours en avril et 5 jours en mai?
Ton exemple fait penser que tes valeurs de dictionnaire sont des strings.
Dans ce cas ce que tu peux faire c'est récupérer ta valeur initiale, créer un nouveau string qui contiendra la nouvelle et l'ancienne valeur, écraser l'ancienne valeur du dictionaire pour la recrée avec le nouveau string.
Tu pourrais faire pareil avec une liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 oldVal = dic['Mai_Sud_2010'] newVal = 60 temp = oldVal + "," + str(newVal) dic['Mai_Sud_2010'] = temp
On ne peut pas:comment peut on obtenir {'Mai_Sud_2010': 43,60}?
=> There's an error in your programm: invalid syntax
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 d = {'Mai_Sud_2010': 43,60} print d
Oui mais il n'y a pas à ma connaissance de manière simple de faire en utilisant des méthodes prédéfinies. Il faut faire un programme un peu conséquent. je ne suis pas arrivé à faire plus court que ce qui suit:est il possible d'avoir ces 94 jours par nombre de jours dans le mois ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 njmois = dict(zip((1,3,4,5,6,7,8,9,10,11,12), (31,31,30,31,30,31,31,30,31,30,31))) import datetime from calendar import isleap def jours_par_mois(couple): a,b = couple if (a.year,a.month)==(b.year,b.month): return [b.day-a.day] else: if a.month==2: li = [ 29 + isleap(a.year) - a.day ] else: li = [ njmois[a.month] - a.day + 1 ] y, m = a.year, a.month+1 while (y,m)!=(b.year,b.month): if m==2: li.append( 28 + isleap(y) ) else: li.append( njmois[m] ) m += 1 if m==13: y, m = y+1, 1 if b.day>1: li.append(b.day-1) return li d = {'date' : [datetime.datetime(2010, 2, 2, 0, 0), datetime.datetime(2010, 5, 6, 12, 0)] } print jours_par_mois(d['date']) print print jours_par_mois([datetime.datetime(2008, 1, 23, 0, 0), datetime.datetime(2010, 5, 6, 12, 0)]) print print jours_par_mois([datetime.datetime(2008, 2, 4, 0, 0), datetime.datetime(2010, 5, 6, 12, 0)])
isleap(y) est True si l'année est bisextile et False sinon.
Mon code tient compte si un mois de février est bisextile ou non, et si la période envisagée s'étend de part et d'autre d'un 1er janvier
Mon code n’est pas bon, le programme plante quand la première date est un jour de décembre:
=> KeyError: 13
Code : Sélectionner tout - Visualiser dans une fenêtre à part print jours_par_mois([datetime.datetime(2008, 12, 22, 0, 0), datetime.datetime(2009, 5, 6, 12, 0)])
C’est parce que je fais commencer l’itération des mois successifs en commençant par
sans vérifier que a.month est différent de 12.
Code : Sélectionner tout - Visualiser dans une fenêtre à part y, m = a.year, a.month+1
Correction de ce bug:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 njmois = dict(zip((1,3,4,5,6,7,8,9,10,11), (31,31,30,31,30,31,31,30,31,30))) import datetime from calendar import isleap def jours_par_mois(couple): a,b = couple y, m, li = a.year, a.month, [] if (y,m)==(b.year,b.month): return [b.day-a.day] while (y,m)!=(b.year,b.month): if m==2: li.append( 28 + isleap(y) ) # fevrier m += 1 elif m==12: li.append( 31 ) y, m = y+1, 1 # de decembre a janvier de l'annee suivante else: li.append( njmois[m] ) m += 1 li[0] = li[0] - a.day + 1 if b.day>1: li.append(b.day-1) return li d = {'date' : [datetime.datetime(2010, 2, 2, 0, 0), datetime.datetime(2010, 5, 6, 12, 0)] } print jours_par_mois(d['date']) print print jours_par_mois([datetime.datetime(2008, 1, 23, 0, 0), datetime.datetime(2010, 5, 6, 12, 0)]) print print jours_par_mois([datetime.datetime(2008, 2, 4, 0, 0), datetime.datetime(2010, 5, 6, 12, 0)]) print print jours_par_mois([datetime.datetime(2007, 12, 22, 0, 0), datetime.datetime(2009, 1, 22, 12, 0)])
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 [27, 31, 30, 5] [9, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 28, 31, 30, 5] [26, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 31, 28, 31, 30, 5] [10, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 21]
Partager