Pythonically extract data from a list of tuples (getopt)

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Mark Reed

    Pythonically extract data from a list of tuples (getopt)

    So the return value from getopt.getopt() is a list of tuples, e.g.
    >>import getopt
    >>opts = getopt.getopt('-a 1 -b 2 -a 3'.split(), 'a:b:')[0]; opts
    [('-a', '1'), ('-b', '2'), ('-a', '3')]

    what's the idiomatic way of using this result? I can think of several
    possibilities.

    For options not allowed to occur more than once, you can turn it into
    a dictionary:
    >>b = dict(opts)['-b']; b
    '2'

    Otherwise, you can use a list comprehension:
    >>a = [arg for opt, arg in opts if opt == '-a']; a
    ['1', '3']

    Maybe the usual idiom is to iterate through the list rather than using
    it in situ...
    >>a = []
    >>b = None
    >>for opt, arg in opts:
    .... if opt == '-a':
    .... a.append(arg)
    .... elif opt == '-b':
    .... b = arg
    .... else:
    .... raise ValueError("Unr ecognized option %s" % opt)

    Any of the foregoing constitute The One Way To Do It? Any simpler,
    legible shortcuts?

    Thanks.


  • Mike Kent

    #2
    Re: Pythonically extract data from a list of tuples (getopt)

    You could use http://docs.python.org/lib/module-optparse.html

    Comment

    Working...