Re: Checking length of each argument - seems like I'm fighting Python

2005-12-03 Thread Mike Erickson
* Brendan ([EMAIL PROTECTED]) wrote:
[...]
> Is there a simpler way to check that either all arguments are scalars,
> or all are lists of the same length?  Is this a poor way to structure
> things?  Your advice is appreciated

Disclaimer: I am new to python, so this may be a bad solution.

import types
def __init__(self,x,y,z):
isOK = False
if ( (type(x) == types.IntType) and (type(y) == types.IntType) and (type(z) 
== types.IntType) ):
isOK = True
if ( (type(x) == types.ListType) and (type(x) == types.ListType) and 
(type(x) == types.ListType) ):
if ( (len(x) == len(y)) and (len(x) == len(z)) ):
isOK = True

HTH,

mike

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Want to reduce steps of an operation with dictionaries

2006-10-24 Thread Mike Erickson
* [EMAIL PROTECTED] ([EMAIL PROTECTED]) wrote:
> Hello:
> I have next dictionaries:
> a={'a':0, 'b':1, 'c':2, 'd':3}
> b={'a':0, 'c':1, 'd':2, 'e':3}
> I want to put in a new dictionary named c all the keys that are in b
> and re-sequence the values. The result I want is:
> c={'a':0, 'c':1, 'd':2}
> How can I do this with one line of instruction?
> 
> I attempted the next but the output is not the expected:
> c=dict([(k,v) for v,k in enumerate(a) if b.has_key(k)])
> erroneously (for me) gets:
> {'a': 0, 'c': 2, 'd': 3}

I am not 100% I understand your questions, but k,v are being pulled from
a, try:

c=dict([(k,b[k]) for v,k in enumerate(a) if b.has_key(k)])

mike

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Iterating over several lists at once

2006-12-13 Thread Mike Erickson
* at ([EMAIL PROTECTED]) wrote:
> Sorry for breaking into this thread, but I agree completely that any
> unnecessary indentations should be avoided. For the same reason I advocate
> that the following syntax should work:
> 
> for x in some_list if some_condition:
> ... code ...
> 
> in stead of 
> 
> for x in some_list 
> if some_condition:
> ... code ...

It is possible to avoid the extra level of indentaion, but I think it's
much less readable than the 2-level verbose expresion:

>>> a
[1, 2, 3, 4, 5, 6, 7]
>>> for odd in (num for num in a if num % 2 == 1):
... print odd
... 
1
3
5
7

there is also continue, which I think is a good compromise:

>>> for num in a:
... if num % 2 == 0:
... continue
... print num
...
1
3
5
7

HTH (and not lead astray),

mike

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Can optparse do dependencies?

2006-02-26 Thread Mike Erickson
* Bob ([EMAIL PROTECTED]) wrote:
> I'd like to setup command line switches that are dependent on other
> switches, similar to what rpm does listed below. From the grammar below
> we see that the "query-options" are dependent on the query switch,
> {-q|--query}. Can "optparse" do this or do I have to code my own
> "thing"? Thanks.

After you pull your options and arguments from optparse, just check for
them, eg:

parser = optparse.OptionParser()
...
(options, args) = parser.parse_args()

if (option.q and not option.p):
parser.error("you must use p to use q")

The meaning of -b doesn't change when it follows -a, but if you want
that, it is doable by extending optparse. There is even an example in
the very good "extending optik"[1] documentation available off the
sf.net site:

http://optik.sourceforge.net/

regards,

mike

[1]: optparse is also known as optik

-- 
http://mail.python.org/mailman/listinfo/python-list