Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

perdu dans les listes et les dictionnaires (encore)

3 réponses
Avatar
Philippe Makowski
Bonjour,

j'ai décidément du mal, voilà mon mon problème :
j'ai un wx.ListBox rempli comme cela :

cur_glob.execute("SELECT DISTINCT C1, C2 FROM T1 ")
for row in cur_glob :
self.section[row[0]]=row
self.lb_section.Clear()
for k, v in self.section.iteritems(): self.lb_section.Append(k, v)

Ensuite en fonction de ce que les utilisateurs selectionnent, je voudrais constituer une chaine que je pourrais utiliser plus loin dans une instruction SQL

avec :
[self.lb_section.GetString(idx) for idx in self.lb_section.GetSelections()]
je récupére bien mes intitulés de la ListBox (qui sont aussi les entrées donc du dictionnaire section)


mais je voudrais écrire une chaine du genre "('A', 'C')" que je pourrais utiliser ailleurs dans le code
'A' et 'B' étant les valeurs correspondantes aux entrées du dictionnaire section


Merci

pour être plus précis par exemple mon dictionnaire section est :
{u'A - libelle 1': (u'A - libelle 1', u'A') , u'B - libelle 2': (u'B - libelle 2', u'B'), u'C - libelle 3': (u'C - libelle 3', u'C')}
ma selection dans Listbox me retourne :
[u'A - libelle 1' , u'C - libelle 3']
et je veux écrire la chaine :
"('A', 'C')"

--
Philippe Makowski
Support et conseil pour Firebird : http://www.espelida.com
Firebird serveur SQL open-source en français http://firebird-fr.eu.org
Ma clé PGP : http://makowski.eu.org/pgpkey.html

3 réponses

Avatar
Jerome
Philippe Makowski wrote:
Bonjour,

j'ai décidément du mal, voilà mon mon problème :
j'ai un wx.ListBox rempli comme cela :

cur_glob.execute("SELECT DISTINCT C1, C2 FROM T1 ")
for row in cur_glob :
self.section[row[0]]=row
self.lb_section.Clear()
for k, v in self.section.iteritems(): self.lb_section.Append(k, v)

Ensuite en fonction de ce que les utilisateurs selectionnent, je voudrais constituer une chaine que je pourrais utiliser plus loin dans une instruction SQL

avec :
[self.lb_section.GetString(idx) for idx in self.lb_section.GetSelections()]
je récupére bien mes intitulés de la ListBox (qui sont aussi les entrées donc du dictionnaire section)


mais je voudrais écrire une chaine du genre "('A', 'C')" que je pourrais utiliser ailleurs dans le code
'A' et 'B' étant les valeurs correspondantes aux entrées du dictionnaire section


Merci

pour être plus précis par exemple mon dictionnaire section est :
{u'A - libelle 1': (u'A - libelle 1', u'A') , u'B - libelle 2': (u'B - libelle 2', u'B'), u'C - libelle 3': (u'C - libelle 3', u'C')}
ma selection dans Listbox me retourne :
[u'A - libelle 1' , u'C - libelle 3']
et je veux écrire la chaine :
"('A', 'C')"



Bonjour

Est-ce que cela te convient ?

section = {u'A - libelle 1': (u'A - libelle 1', u'A') , u'B -
libelle 2': (u'B - libelle 2', u'B'), u'C - libelle 3': (u'C - libelle



3', u'C')}
sel = [u'A - libelle 1' , u'C - libelle 3']




"(%s)" % ','.join(["'%s'" % section[el][1] for el in sel])




u"('A','C')"



Avatar
Philippe Makowski
Philippe Makowski wrote:
Bonjour,

j'ai décidément du mal, voilà mon mon problème :
j'ai un wx.ListBox rempli comme cela :

cur_glob.execute("SELECT DISTINCT C1, C2 FROM T1 ")
for row in cur_glob :
self.section[row[0]]=row
self.lb_section.Clear()
for k, v in self.section.iteritems(): self.lb_section.Append(k, v)

Ensuite en fonction de ce que les utilisateurs selectionnent, je voudrais
constituer une chaine que je pourrais utiliser plus loin dans une
instruction SQL

avec :
[self.lb_section.GetString(idx) for idx in self.lb_section.GetSelections()]
je récupére bien mes intitulés de la ListBox (qui sont aussi les entrées
donc du dictionnaire section)


mais je voudrais écrire une chaine du genre "('A', 'C')" que je pourrais
utiliser ailleurs dans le code
'A' et 'B' étant les valeurs correspondantes aux entrées du dictionnaire
section


Merci

pour être plus précis par exemple mon dictionnaire section est :
{u'A - libelle 1': (u'A - libelle 1', u'A') , u'B - libelle 2': (u'B -
libelle 2', u'B'), u'C - libelle 3': (u'C - libelle 3', u'C')}
ma selection dans Listbox me retourne :
[u'A - libelle 1' , u'C - libelle 3']
et je veux écrire la chaine :
"('A', 'C')"



Bonjour

Est-ce que cela te convient ?

section = {u'A - libelle 1': (u'A - libelle 1', u'A') , u'B -
libelle 2': (u'B - libelle 2', u'B'), u'C - libelle 3': (u'C - libelle 3',



u'C')}
sel = [u'A - libelle 1' , u'C - libelle 3']

"(%s)" % ','.join(["'%s'" % section[el][1] for el in sel])




u"('A','C')"


Presque, merci

le problème dans ce cas est la virgule en trop au cas où l'utilisateur
n'a selectionné qu'une seule entrée

--
Philippe Makowski
Support et conseil pour Firebird : http://www.espelida.com
Firebird serveur SQL open-source en français http://firebird-fr.eu.org
Ma clé PGP : http://makowski.eu.org/pgpkey.html




Avatar
Philippe Makowski
Philippe Makowski wrote:
Bonjour,

j'ai décidément du mal, voilà mon mon problème :
j'ai un wx.ListBox rempli comme cela :

cur_glob.execute("SELECT DISTINCT C1, C2 FROM T1 ")
for row in cur_glob :
self.section[row[0]]=row
self.lb_section.Clear()
for k, v in self.section.iteritems(): self.lb_section.Append(k, v)

Ensuite en fonction de ce que les utilisateurs selectionnent, je voudrais
constituer une chaine que je pourrais utiliser plus loin dans une
instruction SQL

avec :
[self.lb_section.GetString(idx) for idx in
self.lb_section.GetSelections()]
je récupére bien mes intitulés de la ListBox (qui sont aussi les entrées
donc du dictionnaire section)


mais je voudrais écrire une chaine du genre "('A', 'C')" que je pourrais
utiliser ailleurs dans le code
'A' et 'B' étant les valeurs correspondantes aux entrées du dictionnaire
section


Merci

pour être plus précis par exemple mon dictionnaire section est :
{u'A - libelle 1': (u'A - libelle 1', u'A') , u'B - libelle 2': (u'B -
libelle 2', u'B'), u'C - libelle 3': (u'C - libelle 3', u'C')}
ma selection dans Listbox me retourne :
[u'A - libelle 1' , u'C - libelle 3']
et je veux écrire la chaine :
"('A', 'C')"



Bonjour

Est-ce que cela te convient ?

section = {u'A - libelle 1': (u'A - libelle 1', u'A') , u'B -
libelle 2': (u'B - libelle 2', u'B'), u'C - libelle 3': (u'C - libelle 3',



u'C')}
sel = [u'A - libelle 1' , u'C - libelle 3']

"(%s)" % ','.join(["'%s'" % section[el][1] for el in sel])




u"('A','C')"


Presque, merci

le problème dans ce cas est la virgule en trop au cas où l'utilisateur n'a
selectionné qu'une seule entrée


Pardon, non, c'est parfait

merci beaucoup !

--
Philippe Makowski
Support et conseil pour Firebird : http://www.espelida.com
Firebird serveur SQL open-source en français http://firebird-fr.eu.org
Ma clé PGP : http://makowski.eu.org/pgpkey.html