OVH Cloud OVH Cloud

[NewBie] Hashing Table

21 réponses
Avatar
lesouriciergris
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

--
\_@°> Eric BERTHOMIER / Le Sourcier Gris
http://lesouriciergris.free.fr http://troll.west.free.fr

10 réponses

1 2 3
Avatar
lesouriciergris
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 ...
Trouvé ...

tabcode[key]={}
tabcode[key][duree]=valeur

Par contre ceci réinitialise tabcode[key] donc incorrect pour moi ...

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

Avatar
News M Claveau /Hamster-P
Bonjour !


AMHA, je passerais par tabcode[(key,duree)]=valeur


@-salutations
--
Michel Claveau
Avatar
J.Pierre Pourrez
Le Mon, 14 Mar 2005 17:35:13 +0100, a
écrit :

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 ...
Trouvé ...

tabcode[key]={}
tabcode[key][duree]=valeur

Par contre ceci réinitialise tabcode[key] donc incorrect pour moi ...


Avec Idle :

tabcode = {}
tabcode['key'] = {}
tabcode['key']['duree'] = 999
tabcode
{'key': {'duree': 999}}








En python, une table de hachage s'appelle un dictionnaire.
Il faut tjrs initialiser un tableau ou un dictionnaire

A++
Jean-Pierre



Avatar
News M Claveau /Hamster-P
Bonsoir !

Je trouve que le terme "hachage" est mal employé, ici.

En effet, le seul algorithme de hachage qu'il y a, peut-être, dans un
dictionnaire, ce serait pour le rangement interne des éléments du
dictionnaire. Et c'est sous réserve de vérification.

Mais le terme est également galvaudé en Perl, si j'en juge d'après le
message du Sourcier Gris.

Les algorithmes de hachage sont, AMHA, plutôt employés lors du calcul d'un
MD5, d'un SHA, etc.

Bon, je m'excuse de frimer, mais c'était une bonne occasion pour soigner mon
égo.


@-salutations
--
Michel Claveau
Avatar
bruno modulix
wrote:
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 ...



Si possible, la prochaine fois, poste le traceback, ça peut aider...

Trouvé ...
tabcode[key]={}
tabcode[key][duree]=valeur


ce qui est égal à:
tabcode[key] = {duree : valeur}

Par contre ceci réinitialise tabcode[key] donc incorrect pour moi ...


try:
tabcode[key][duree] = valeur
except KeyError:
tabcode[key] = {duree: valeur}

ou

if tabcode.has_key(key):
tabcode[key][duree] = valeur
else:
tabcode[key] = {duree: valeur}

Utilise le premier idiome si les probabilités sont que tabcode[key]
existe déjà, le second sinon.

Contrairement à Perl (ou a PHP), Python est strict sur l'initialisation
des variables. Et c'est une Bonne Chose(tm).

BTW, la solution de Michel (utiliser le tuple (key, duree) comme clé
dans le dictionnaire) peut être à considérer également, selon les
besoins de ton appli.


Bienvenu au club, et bien le bonjour à ton pote Fahfrd [1] !-)

[1] pas très sûr de l'orthographe...
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"


Avatar
Rakotomandimby (R12y) Mihamina
( Mon, 14 Mar 2005 18:52:23 +0100 ) bruno modulix :

Bienvenu au club, et bien le bonjour à ton pote Fahfrd [1] !-)


celui qui planche sur CMFBoard ?
--
L'ASPO a pour but de démocratiser l'acces a l'informatique. Une de ses
activité est l'infogerance (http://aspo.rktmb.org/activites/infogerance)
Tél: + 33 2 38 04 26 04 ou + 33 6 33 26 13 14 (France)

Avatar
Amaury Forgeot d'Arc
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



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.

Avatar
Bruno Desthuilliers
wrote:

(snip)

Bienvenu au club, et bien le bonjour à ton pote Fahfrd [1] !-)

[1] pas très sûr de l'orthographe...


C'était Fafhrd, bien sûr...

Avatar
lesouriciergris
Rakotomandimby (R12y) Mihamina wrote:
( Mon, 14 Mar 2005 18:52:23 +0100 ) bruno modulix :


Bienvenu au club, et bien le bonjour à ton pote Fahfrd [1] !-)



celui qui planche sur CMFBoard ?


Celui de Fritz Leiber pour ma part...

--
_@°> Eric BERTHOMIER / Le Sourcier Gris
http://lesouriciergris.free.fr http://troll.west.free.fr


Avatar
bruno modulix
Amaury Forgeot d'Arc wrote:

(snip)

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.


Groumf... je l'oublie toujours, celui là :(
Merci Amaury...

--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"

1 2 3