On 10/24/07, J. Clifford Dyer <[EMAIL PROTECTED]> wrote: > > On Wed, Oct 24, 2007 at 12:09:40PM -0000, Alexandre Badez wrote regarding > Better writing in python: > > > > lMandatory = [] > > lOptional = [] > > for arg in cls.dArguments: > > if arg is True: > > lMandatory.append(arg) > > else: > > lOptional.append(arg) > > return (lMandatory, lOptional) > > > > I think there is a better way, but I can't see how... > > > > I assume cls.dArguments is a dict, correct? > > `for arg in cls.dArguments` takes each *key* for cls.dArguments and > assigns it to arg, so the line 'if arg is True' will test the truth value of > each key. I assume (you haven't shown the details here) that your dict > looks like this: > > cls.dArguments = { 'a': True, 'b': False, 'c': True, 'd': False, '': True, > 0: False } > > and you want your for loop to do this: > > lMandatory == [ 'a', 'c', '' ] > lOptional == [ 'b', 'd', 0 ] > > in fact, since it's testing the truth value of the keys, not the values, > you will get this: > > lMandatory == [ 'a', 'b', 'c', 'd' ] > lOptional == [ '', 0 ] > > In no particular order, of course. > > Also, `if x is True:` should be written as `if x:` > > Actually, come to think of it, what I said above is false, because the > string 'a' *is not* the boolean value True, per se: it is *equal to* > True. So if you change `if x is True:` to `if x == True:` then everything > I said above holds true, including that you should change `if x == True:` to > `if x:` > > As it stands, the only key in your dict that has a snowball's chance in > key largo of being marked as mandatory is the boolean value True itself. > > Cheers, > Cliff >
Thanks for your try Cliff, I was very confused :P More over I made some mistake when I post (to make it easiest). Here is my real code: with dArguments = { 'argName' : { 'mandatory' : bool, # True or False [...], # other field we do not care here } } lMandatory = [] lOptional = [] for arg in cls.dArguments: if cls.dArguments[arg]['mandatory']: lMandatory.append(arg) else: lOptional.append(arg) return (lMandatory, lOptional) So, as you see, we agree each other about "if bool" or "if bool is True" ;) So, my question was how to give it a better 'python like' look ? Any idea ? -- Alex http://alexandre.badez.googlepages.com/ [EMAIL PROTECTED]
-- http://mail.python.org/mailman/listinfo/python-list