una posiciones llenar listas for eliminar ejercicios diccionarios diccionario con como clave añadir acceder python function dictionary parameters keyword

posiciones - Pasar un diccionario a una función en python como parámetros de palabras clave



ejercicios de diccionarios en python (4)

Me gustaría llamar a una función en python usando un diccionario.

Aquí hay un código:

d = dict(param=''test'') def f(param): print param f(d)

Esto imprime {''param'': ''test''} pero me gustaría que solo imprima la test .

Me gustaría que funcione de manera similar para más parámetros:

d = dict(p1=1, p2=2) def f2(p1,p2): print p1, p2 f2(d)

es posible?


Algunos detalles adicionales que pueden ser útiles para saber (preguntas que tuve después de leer esto y que fueron y probaron):

  1. La función puede tener parámetros que no están incluidos en el diccionario.
  2. No puede anular un parámetro que ya está en el diccionario
  3. El diccionario no puede tener parámetros que no estén en la función.

Ejemplos de cada uno:

def mytest(a=4, b=2): print a, b

Número 1: la función puede tener parámetros que no están incluidos en el diccionario

In[6]: mydict = {''a'': 100} In[7]: mytest(**mydict) 100 2

Número 2: no puede anular un parámetro que ya se encuentra en el diccionario

In[8]: mydict = {''a'': 100, ''b'': 200} In[9]: mytest(a=3, **mydict) TypeError: mytest() got multiple values for keyword argument ''a''

Número 3: el diccionario no puede tener parámetros que no estén en la función.

In[10]: mydict = {''a'': 100, ''b'': 200, ''c'': 300} In[11]: mytest(**mydict) TypeError: mytest() got an unexpected keyword argument ''c''


Aquí tienes, funciona cualquier otro iterable:

d = {''param'' : ''test''} def f(dictionary): for key in dictionary: print key f(d)


En Python, esto se denomina "desempaquetar", y puedes encontrar un poco al respecto en el tutorial . La documentación de esto apesta, estoy de acuerdo, especialmente por lo fantásticamente útil que es.


Lo descubrí por mí mismo al final. Es simple, me faltaba el operador ** para descomprimir el diccionario

Entonces mi ejemplo se convierte en:

d = dict(p1=1, p2=2) def f2(p1,p2): print p1, p2 f2(**d)