IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Problème "for" dans dictionnaire de liste


Sujet :

Python

  1. #1
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut Problème "for" dans dictionnaire de liste
    bonjour,

    voici le problème : En fonction du parametre "param" recu, la fonction si dessous doit selectionner tous les élémenents[0] ( ex: choix1, choix2...) du services correspondant ( le service passé par le parametre "param")

    Seulement j'ai beau chercher je ne parviens pas a récupérer les 1er element de chaque liste.

    voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    services={'service1':(('choix1','onsenfou','onsenfou'),('choix2','onsenfou','onsenfou'),('choix3','onsenfou','onsenfou')),'service2':(('repA','onsenfou','onsenfou'), ('repB','onsenfou','onsenfou'))}
     
    def sujets_service(self):
    	param = self.REQUEST.get('param', None)
    	try:
                for e in services[param]:
                    return e[0]
     
    	except KeyError:
    		return None
    merci.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Le problème vient du fait que return quitte la fonction
    Tu as deux possibilités:
    La plus proche syntaxiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    def sujets_service(self):
       param = self.REQUEST.get('param', None)
       try:
                for e in services[param]:
                    yield e[0] #python2.4 http://www.python.org/peps/pep-0255.html
     
       except KeyError:
          return None
    Celle qui correspond le mieux à ce que tu cherches
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def sujets_service(self):
       param = self.REQUEST.get('param', None)
       R = []
       try:
                for e in services[param]:
                    R.append(e[0])
     
       except KeyError:
          return None
       else:
          return R

  3. #3
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    Un grand merci pour la solution! et pour la rapidité! c'est cool

  4. #4
    Membre actif
    Avatar de bobuse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 232
    Points : 278
    Points
    278
    Par défaut
    for e in services[param]:
    R.append(e[0])
    peut aussi s'écrire :
    [e[0] for e in services[param]]

    si je ne m'abuse

    Par contre j'ai rien pigé au yield :

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] problème avec 'For each ' dans un état
    Par Jean-Luc80 dans le forum IHM
    Réponses: 2
    Dernier message: 05/06/2011, 05h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo