¿Cómo pasar elementos de diccionario como argumentos de función en python? [duplicar]
Esta pregunta ya tiene una respuesta aquí:
Mi código
1er archivo:
data = {'school':'DAV', 'standard': '7', 'name': 'abc', 'city': 'delhi'}
my_function(*data)
2do archivo:
my_function(*data):
schoolname = school
cityname = city
standard = standard
studentname = name
En el código anterior, solo las claves del diccionario "data" se pasan a my_function()
, pero quiero que se pasen los pares clave-valor. Cómo corregir esto ?
Quiero que el my_function()
se modifique así
my_function(school='DAV', standard='7', name='abc', city='delhi')
Y este es mi requisito, dar respuestas de acuerdo a esto
EDITAR: dictionary key class se cambia a standard
3 answers
Si quieres usarlos así, define la función con los nombres de las variables como normal (pero usa klass
para class
, no puedes usar palabras reservadas):
def my_function(school, city, klass, name):
schoolname = school
cityname = city
standard = klass
studentname = name
Ahora (siempre y cuando cambie el nombre de class a klass en su diccionario) puede usar **
cuando llame a la función:
my_function(**data)
Y funcionará como quieras.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-24 11:22:17
*data interpreta los argumentos como tuplas, en su lugar debe pasar **data que interpreta los argumentos como diccionario.
data = {'school':'DAV', 'class': '7', 'name': 'abc', 'city': 'pune'}
def my_function(**data):
schoolname = data['school']
cityname = data['city']
standard = data['class']
studentname = data['name']
Puedes llamar a la función así:
my_function(**data)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-24 11:23:31
Puedes pasarlo
def my_function(my_data):
my_data["schoolname"] = "something"
print my_data
O si realmente quieres
def my_function(**kwargs):
kwargs["schoolname"] = "something"
print kwargs
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-24 11:18:43