Accueil » Python » Forums Python » Forum général Python » Dictionnaire : comment retourner la valeur d'un élément ???

 • Dictionnaire : comment retourner la valeur d'un élément ???

Document Actions
Réponses: 4   Visites: 0
Up one level
Vous devez être un membre enregistré pour contribuer sur ce forum. Inscrivez-vous maintenant

 • Dictionnaire : comment retourner la valeur d'un élément ???

Posté par tcr le 19/03/2008 11:48
Bonjour,

Dans une ZPT, j'aimerais afficher la valeur d'une clé d'un élément (toujours le même) d'un dictionnaire.

En fait, il s'agit d'un forum et de posts : le premier à le niveau (level) 1 les réponses le niveau +1 et je voudrais afficher dans toutes les réponses le titre (title) du post de niveau 1.

Je récupère cela :
code:
[{'level': 1, 'url': 'http://localhost:8103/<site>/forum/discussions/medical/question/post200803189813606083', 'title': 'Aaaaaaaa', 'author': 'medical1', 'created': DateTime('2008/03/18 14:29:52.454 GMT+1'), 'anonymous': False, 'path': '/<site>/forum/discussions/test/question/post200803189813606083',
'children':[{'level': 2, 'url': 'http://localhost:8103/<site>/forum/discussions/test/question/post200803189813606083/post200803184195609265', 'title': 'Re: Aaaaaaaa rep med2', 'author': 'test2', 'created': DateTime('2008/03/18 15:27:31.530 GMT+1'), 'anonymous': False, 'path': '/<site>/forum/discussions/test/question/post200803189813606083/post200803184195609265',
children':[{'level': 3, 'url': 'http://localhost:8103/forumresurgences/resurgences/discussions/medical/question/post200803189813606083/post200803184195609265/post200803183553798430', 'title': 'Re: Re: Aaaaaaaa rep med2', 'author': 'medical2', 'created': DateTime('2008/03/18 15:42:48.520 GMT+1'), 'anonymous': False, 'path': '/forumresurgences/resurgences/discussions/medical/question/post200803189813606083/post200803184195609265/post200803183553798430',
'children':[{'level': 4, 'url': 'http://localhost:8103/forumresurgences/resurgences/discussions/medical/question/post200803189813606083/post200803184195609265/post200803183553798430/post200803185991220961', 'title': 'Re: Re: Re: Aaaaaaaa rep med2', 'author': 'medical2', 'created': DateTime('2008/03/18 15:47:00.167 GMT+1'), 'anonymous': False, 'path': '/forumresurgences/resurgences/discussions/medical/question/post200803189813606083/post200803184195609265/post200803183553798430/post200803185991220961',
'children':[{'level': 5, 'url': 'http://localhost:8103/forumresurgences/resurgences/discussions/medical/question/post200803189813606083/post200803184195609265/post200803183553798430/post200803185991220961/post200803186875997909', 'title': 'Re: Re: Re: Re: Aaaaaaaa rep med2', 'author': 'medical2', 'created': DateTime('2008/03/18 15:48:36.550 GMT+1'), 'anonymous': False, 'path': '/forumresurgences/resurgences/discussions/medical/question/post200803189813606083/post200803184195609265/post200803183553798430/post200803185991220961/post200803186875997909'}]}]}]}]


Donc dans la ZPT, je voudrais écrire un truc du genre :
<div tal:content="string:Titre de la discussion : ${post_item.<je ne pas comment récupérer le post de level == 1>.title}"/>

Je ne sais pas récupérer le valeur de la clé 'title' du premier élément (level 1) : j'ai essayé "post_item[0].title" et d'autres choses sans succès...

Merci pour vos éclaircissements,

Thierry

 • Re: Dictionnaire : comment retourner la valeur d'un élément ???

Posté par niavlyss le 19/03/2008 17:39
c'est ça que tu veux?

code:
post_item[0]['title']

 • Re: Dictionnaire : comment retourner la valeur d'un élément ???

Posté par tcr le 20/03/2008 09:34
niavlyss wrote:
c'est ça que tu veux?

code:
post_item[0]['title']




Merci mais non, j'avais essayé et j'obtiens le message suivant :

Erreur du site

Le site a rencontré une erreur en essayant de répondre à votre demande :

Type de l'erreur
KeyError
Valeur de l'erreur
0



Une autre idée ?

 • Re: Dictionnaire : comment retourner la valeur d'un élément ???

Posté par jpcw2002 le 21/03/2008 10:17
C'est normal ! tu as une liste d'un élément qui contient un dico qui une clé qui contient une liste d'un élément qui a une clé etc.
En clair tes éléments sont imbriqués et non à plat :)

Il te faut donc les attaquer avec une fonction récursive !
code:

test = ta_liste_du_dessus

def getChildrenTitle(children):
    elt = children[0 ]
    print elt['title' ]
    if 'children' in elt.keys():
        getChildrenTitle(elt['children' ])


>>> print getChildrenTitle(test)
Aaaaaaaa
Re: Aaaaaaaa rep med2
Re: Re: Aaaaaaaa rep med2
Re: Re: Re: Aaaaaaaa rep med2
Re: Re: Re: Re: Aaaaaaaa rep med2
None

 • Re: Dictionnaire : comment retourner la valeur d'un élément ???

Posté par tcr le 21/03/2008 10:25
Ah ! Bah ! dit comme cela, c'est plus clair !

Entre les listes, tuples et dictionnaires, j'suis encore un peu perdu.

Je sentais bien qu'il allait y avoir de la boucle dans l'air...

Bon, on va boucler !

Un grand merci pour l'explication, le code et bonnes Pâques,

Thierry