Python arguments as a dictionary

83,006

Solution 1

Use a single argument prefixed with **.

>>> def foo(**args):
...     print(args)
...
>>> foo(a=1, b=2)
{'a': 1, 'b': 2}

Solution 2

For non-keyworded arguments, use a single *, and for keyworded arguments, use a **.

For example:

def test(*args, **kwargs):
    print args
    print kwargs

>>test(1, 2, a=3, b=4)
(1, 2)
{'a': 3, 'b': 4}

Non-keyworded arguments would be unpacked to a tuple and keyworded arguments would be unpacked to a dictionary. Unpacking Argument Lists

Share:
83,006

Related videos on Youtube

Sean W.
Author by

Sean W.

Updated on July 09, 2022

Comments

  • Sean W.
    Sean W. almost 2 years

    How can I get argument names and their values passed to a method as a dictionary?

    I want to specify the optional and required parameters for a GET request as part of a HTTP API in order to build the URL. I'm not sure of the best way to make this pythonic.

  • jdi
    jdi over 12 years
    And just to add, a single * is used to accept an unnamed amount of non keyword args as a list: *args
  • Makoto
    Makoto over 12 years
    The result would be: (1, 2) {'a': 3, 'b': 4}.
  • Fred Foo
    Fred Foo over 12 years
    @Marcin: Well, maybe I give away code too easily, but this is the kind of construct that I personally always find hard to search for when learning a language.
  • Vanuan
    Vanuan over 11 years
    What if I still want the possible keyword arguments (and defaults) to be provided in the function's definition?