Tsssss ....
j'essaye porter un programme PERL en Python.
Dans ce programme je dispose d'une table de hashage dont les éléments
pointent sur une autre table de hashage ce qui nous donne celà :
$tabcode{cle}{duree}=valeur;
J'ai bien essayé tabcode[key][duree]=valeur; mais que neni il n'en veut
pas ...
Quelqu'un pourrait il m'aider à apprivoiser la bête ?
Merci
--
\_@°> Eric BERTHOMIER / Le Sourcier Gris
http://lesouriciergris.free.fr http://troll.west.free.fr
Tsssss .... j'essaye porter un programme PERL en Python. Dans ce programme je dispose d'une table de hashage dont les éléments pointent sur une autre table de hashage ce qui nous donne celà : $tabcode{cle}{duree}=valeur;
J'ai bien essayé tabcode[key][duree]=valeur; mais que neni il n'en veut pas ...
Quelqu'un pourrait il m'aider à apprivoiser la bête ?
Merci
Merci à tous pour toutes ces réponses qui m'ont débloqué dans mon codage.
-- _@°> Eric BERTHOMIER / Le Sourcier Gris http://lesouriciergris.free.fr http://troll.west.free.fr
lesouriciergris@nospamfree.fr wrote:
Salut à tous,
Tsssss ....
j'essaye porter un programme PERL en Python.
Dans ce programme je dispose d'une table de hashage dont les éléments
pointent sur une autre table de hashage ce qui nous donne celà :
$tabcode{cle}{duree}=valeur;
J'ai bien essayé tabcode[key][duree]=valeur; mais que neni il n'en veut
pas ...
Quelqu'un pourrait il m'aider à apprivoiser la bête ?
Merci
Merci à tous pour toutes ces réponses qui m'ont débloqué dans mon codage.
--
_@°> Eric BERTHOMIER / Le Sourcier Gris
http://lesouriciergris.free.fr http://troll.west.free.fr
Tsssss .... j'essaye porter un programme PERL en Python. Dans ce programme je dispose d'une table de hashage dont les éléments pointent sur une autre table de hashage ce qui nous donne celà : $tabcode{cle}{duree}=valeur;
J'ai bien essayé tabcode[key][duree]=valeur; mais que neni il n'en veut pas ...
Quelqu'un pourrait il m'aider à apprivoiser la bête ?
Merci
Merci à tous pour toutes ces réponses qui m'ont débloqué dans mon codage.
-- _@°> Eric BERTHOMIER / Le Sourcier Gris http://lesouriciergris.free.fr http://troll.west.free.fr
Jean-michel
Pardonnez mon outrecuidance, mais quel est l'intérêt par rapport à : tabcode[cle]={duree:valeur} qui crée aussi l'entrée inexistante ?
Où alors, il me manque un neurone quelque part... jean-michel
Il faut d'abord initialiser le dictionnaire : tabcode = {}
puis pour chaque élément : tabcode.setdefault(cle, {})[duree] = valeur
'setdefault' a la bonne idée de créer l'entrée du dictionnaire quand elle n'existe pas. On lui donne donc un autre dictionnaire par défaut.
En espérant que c'est cela qui convient,
Amaury.
Pardonnez mon outrecuidance, mais quel est l'intérêt par rapport à :
tabcode[cle]={duree:valeur}
qui crée aussi l'entrée inexistante ?
Où alors, il me manque un neurone quelque part...
jean-michel
Il faut d'abord initialiser le dictionnaire :
tabcode = {}
puis pour chaque élément :
tabcode.setdefault(cle, {})[duree] = valeur
'setdefault' a la bonne idée de créer l'entrée du dictionnaire quand elle
n'existe pas. On lui donne donc un autre dictionnaire par défaut.
Pardonnez mon outrecuidance, mais quel est l'intérêt par rapport à : tabcode[cle]={duree:valeur} qui crée aussi l'entrée inexistante ?
Où alors, il me manque un neurone quelque part... jean-michel
Il faut d'abord initialiser le dictionnaire : tabcode = {}
puis pour chaque élément : tabcode.setdefault(cle, {})[duree] = valeur
'setdefault' a la bonne idée de créer l'entrée du dictionnaire quand elle n'existe pas. On lui donne donc un autre dictionnaire par défaut.
En espérant que c'est cela qui convient,
Amaury.
L'intêret c'est d'avoir une implémentation utilisable dans un domaine ou
plusieurs paires <durées, valeur> peuvent correspondre à une seule clé. Tu saisis ? Allez, tu es pardonné ... mais ne recommence pas. ;-)))
Jean-michel
Je continue à ne pas capter. Dans l'exemple (faite avec python 2.3.4): #-------------------------- tabcode = tabcode2 = {} cle= 'k1' duree= 11 valeur= 100 tabcode.setdefault(cle, {})[duree] = valeur tabcode2[cle]={duree:valeur} cle= 'k1' duree= 22 valeur= 200 tabcode.setdefault(cle, {})[duree] = valeur tabcode2[cle]={duree:valeur} print '-'*20 print tabcode print tabcode2
#--------------------------
J'obtiens la même chose dans tabcode et tabcode2, à savoir: {'k1': {22: 200}} {'k1': {22: 200}}
Je n'arrive pas à voir un cas ou "tabcode.setdefault(cle, {})[duree] = valeur" donnera autre chose que "tabcode[cle]={duree:valeur}", et pour moi, la deuxième écriture est plus simple. ++
L'intêret c'est d'avoir une implémentation utilisable dans un domaine ou plusieurs paires <durées, valeur> peuvent correspondre à une seule clé. Tu saisis ?
Je continue à ne pas capter.
Dans l'exemple (faite avec python 2.3.4):
#--------------------------
tabcode = tabcode2 = {}
cle= 'k1'
duree= 11
valeur= 100
tabcode.setdefault(cle, {})[duree] = valeur
tabcode2[cle]={duree:valeur}
cle= 'k1'
duree= 22
valeur= 200
tabcode.setdefault(cle, {})[duree] = valeur
tabcode2[cle]={duree:valeur}
print '-'*20
print tabcode
print tabcode2
#--------------------------
J'obtiens la même chose dans tabcode et tabcode2, à savoir:
{'k1': {22: 200}}
{'k1': {22: 200}}
Je n'arrive pas à voir un cas ou "tabcode.setdefault(cle, {})[duree] =
valeur" donnera autre chose que "tabcode[cle]={duree:valeur}", et pour moi,
la deuxième écriture est plus simple.
++
L'intêret c'est d'avoir une implémentation utilisable dans un domaine ou
plusieurs paires <durées, valeur> peuvent correspondre à une seule clé. Tu
saisis ?
Je continue à ne pas capter. Dans l'exemple (faite avec python 2.3.4): #-------------------------- tabcode = tabcode2 = {} cle= 'k1' duree= 11 valeur= 100 tabcode.setdefault(cle, {})[duree] = valeur tabcode2[cle]={duree:valeur} cle= 'k1' duree= 22 valeur= 200 tabcode.setdefault(cle, {})[duree] = valeur tabcode2[cle]={duree:valeur} print '-'*20 print tabcode print tabcode2
#--------------------------
J'obtiens la même chose dans tabcode et tabcode2, à savoir: {'k1': {22: 200}} {'k1': {22: 200}}
Je n'arrive pas à voir un cas ou "tabcode.setdefault(cle, {})[duree] = valeur" donnera autre chose que "tabcode[cle]={duree:valeur}", et pour moi, la deuxième écriture est plus simple. ++
L'intêret c'est d'avoir une implémentation utilisable dans un domaine ou plusieurs paires <durées, valeur> peuvent correspondre à une seule clé. Tu saisis ?
Jean-michel
L'entrée existante est aussi effacée dans le cas de "tabcode[cle]={duree:valeur}". Voir l'exemple (faite avec python 2.3.4): #-------------------------- tabcode = tabcode2 = {} cle= 'k1' duree= 11 valeur= 100 tabcode.setdefault(cle, {})[duree] = valeur tabcode2[cle]={duree:valeur} cle= 'k1' duree= 22 valeur= 200 tabcode.setdefault(cle, {})[duree] = valeur tabcode2[cle]={duree:valeur} print '-'*20 print tabcode print tabcode2
#-------------------------- qui donne bien: {'k1': {22: 200}} {'k1': {22: 200}}
"Paul Gaborit" a écrit dans le message de news:
À (at) Tue, 15 Mar 2005 17:48:06 +0100, "Jean-michel" écrivait (wrote):
Pardonnez mon outrecuidance, mais quel est l'intérêt par rapport à : tabcode[cle]={duree:valeur} qui crée aussi l'entrée inexistante ?
Si l'entrée est inexistante, c'est bon. Si elle existait déjà, on perd son ancien contenu.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
L'entrée existante est aussi effacée dans le cas de
"tabcode[cle]={duree:valeur}".
Voir l'exemple (faite avec python 2.3.4):
#--------------------------
tabcode = tabcode2 = {}
cle= 'k1'
duree= 11
valeur= 100
tabcode.setdefault(cle, {})[duree] = valeur
tabcode2[cle]={duree:valeur}
cle= 'k1'
duree= 22
valeur= 200
tabcode.setdefault(cle, {})[duree] = valeur
tabcode2[cle]={duree:valeur}
print '-'*20
print tabcode
print tabcode2
#--------------------------
qui donne bien:
{'k1': {22: 200}}
{'k1': {22: 200}}
"Paul Gaborit" <Paul.Gaborit@invalid.invalid> a écrit dans le message de
news: r7wts896lh.fsf@iena.enstimac.fr...
À (at) Tue, 15 Mar 2005 17:48:06 +0100,
"Jean-michel" <jean-michel.bain-cornu@wanadoo.nspm.fr> écrivait (wrote):
Pardonnez mon outrecuidance, mais quel est l'intérêt par rapport à :
tabcode[cle]={duree:valeur}
qui crée aussi l'entrée inexistante ?
Si l'entrée est inexistante, c'est bon.
Si elle existait déjà, on perd son ancien contenu.
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
L'entrée existante est aussi effacée dans le cas de "tabcode[cle]={duree:valeur}". Voir l'exemple (faite avec python 2.3.4): #-------------------------- tabcode = tabcode2 = {} cle= 'k1' duree= 11 valeur= 100 tabcode.setdefault(cle, {})[duree] = valeur tabcode2[cle]={duree:valeur} cle= 'k1' duree= 22 valeur= 200 tabcode.setdefault(cle, {})[duree] = valeur tabcode2[cle]={duree:valeur} print '-'*20 print tabcode print tabcode2
#-------------------------- qui donne bien: {'k1': {22: 200}} {'k1': {22: 200}}
"Paul Gaborit" a écrit dans le message de news:
À (at) Tue, 15 Mar 2005 17:48:06 +0100, "Jean-michel" écrivait (wrote):
Pardonnez mon outrecuidance, mais quel est l'intérêt par rapport à : tabcode[cle]={duree:valeur} qui crée aussi l'entrée inexistante ?
Si l'entrée est inexistante, c'est bon. Si elle existait déjà, on perd son ancien contenu.
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Eric Brunel
On Thu, 17 Mar 2005 11:16:53 +0100, Jean-michel wrote:
L'entrée existante est aussi effacée dans le cas de "tabcode[cle]={duree:valeur}". Voir l'exemple (faite avec python 2.3.4): #-------------------------- tabcode = tabcode2 = {}
Ne jamais faire ça! Cette instruction affecte le *meme* dictionnaire aux deux variables tabcode et tabcode2. Ensuite, modifier l'un modifiera l'autre.
Exemple:
a = b = {} a['toto'] = 1 a {'toto': 1}
b {'toto': 1}
Si tu remplaces la ligne dans ton code par: tabcode, tabcode2 = {}, {}
ça devrait tout de suite mieux marcher...
HTH -- python -c 'print "".join([chr(154 - ord(c)) for c in "U(17zX(%,5.z^5(17l8(%,5.Z*(93-965$l7+-"])'
On Thu, 17 Mar 2005 11:16:53 +0100, Jean-michel <jean-michel.bain-cornu@wanadoo.nspm.fr> wrote:
L'entrée existante est aussi effacée dans le cas de
"tabcode[cle]={duree:valeur}".
Voir l'exemple (faite avec python 2.3.4):
#--------------------------
tabcode = tabcode2 = {}
Ne jamais faire ça! Cette instruction affecte le *meme* dictionnaire aux deux variables tabcode et tabcode2. Ensuite, modifier l'un modifiera l'autre.
Exemple:
a = b = {}
a['toto'] = 1
a
{'toto': 1}
b
{'toto': 1}
Si tu remplaces la ligne dans ton code par:
tabcode, tabcode2 = {}, {}
ça devrait tout de suite mieux marcher...
HTH
--
python -c 'print "".join([chr(154 - ord(c)) for c in "U(17zX(%,5.z^5(17l8(%,5.Z*(93-965$l7+-"])'
On Thu, 17 Mar 2005 11:16:53 +0100, Jean-michel wrote:
L'entrée existante est aussi effacée dans le cas de "tabcode[cle]={duree:valeur}". Voir l'exemple (faite avec python 2.3.4): #-------------------------- tabcode = tabcode2 = {}
Ne jamais faire ça! Cette instruction affecte le *meme* dictionnaire aux deux variables tabcode et tabcode2. Ensuite, modifier l'un modifiera l'autre.
Exemple:
a = b = {} a['toto'] = 1 a {'toto': 1}
b {'toto': 1}
Si tu remplaces la ligne dans ton code par: tabcode, tabcode2 = {}, {}
ça devrait tout de suite mieux marcher...
HTH -- python -c 'print "".join([chr(154 - ord(c)) for c in "U(17zX(%,5.z^5(17l8(%,5.Z*(93-965$l7+-"])'
Amaury Forgeot d'Arc
Ton exemple contient une erreur. Si on ne garde que 2 lignes de ton message :
tabcode = tabcode2 = {} ...
J'obtiens la même chose dans tabcode et tabcode2
Et c'est normal !
Essaie donc en construisant deux dictionnaires différents:
tabcode = {} tabcode2 = {}
Amaury
Ton exemple contient une erreur.
Si on ne garde que 2 lignes de ton message :
tabcode = tabcode2 = {}
...
J'obtiens la même chose dans tabcode et tabcode2
Et c'est normal !
Essaie donc en construisant deux dictionnaires différents:
Le 'setdefault' permet de ne pas perdre les clés et les valeurs déjà présentes dans le dictionnaire (a[cle] - pas a). Dans l'exemple, l'ajout de la clé 'w' ne supprime pas la clé 'v' qui existait déjà. Alors que l'ajout de la clé 'x' supprime les deux précédentes ('w' et 'v').
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
À (at) Thu, 17 Mar 2005 11:16:49 +0100,
"Jean-michel" <jean-michel.bain-cornu@wanadoo.nspm.fr> écrivait (wrote):
Je continue à ne pas capter.
Un petit script pour illustrer le problème :
a = {}
cle = 'kle'
a[cle] = {'v':'v'}
print a
a.setdefault(cle, {})['w'] = 'w'
print a
a[cle] = {'x':'x'}
print a
Le 'setdefault' permet de ne pas perdre les clés et les valeurs déjà présentes
dans le dictionnaire (a[cle] - pas a). Dans l'exemple, l'ajout de la clé 'w'
ne supprime pas la clé 'v' qui existait déjà. Alors que l'ajout de la clé 'x'
supprime les deux précédentes ('w' et 'v').
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Le 'setdefault' permet de ne pas perdre les clés et les valeurs déjà présentes dans le dictionnaire (a[cle] - pas a). Dans l'exemple, l'ajout de la clé 'w' ne supprime pas la clé 'v' qui existait déjà. Alors que l'ajout de la clé 'x' supprime les deux précédentes ('w' et 'v').
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Jean-michel
Des baffes, je mérite des baffes...
"Eric Brunel" a écrit dans le message de news:
tabcode = tabcode2 = {}
Ne jamais faire ça! Cette instruction affecte le *meme* dictionnaire aux deux variables tabcode et tabcode2. Ensuite, modifier l'un modifiera l'autre.
Des baffes, je mérite des baffes...
"Eric Brunel" <eric_brunel@despammed.com> a écrit dans le message de news:
opsnsd7gsgrqur0o@eb.pragmadev...
tabcode = tabcode2 = {}
Ne jamais faire ça! Cette instruction affecte le *meme* dictionnaire aux
deux variables tabcode et tabcode2. Ensuite, modifier l'un modifiera
l'autre.