web-dev-qa-db-fra.com

Comment passer des éléments de dictionnaire en tant qu'arguments de fonction en python?

Mon code

1er fichier:

data = {'school':'DAV', 'standard': '7', 'name': 'abc', 'city': 'delhi'}
my_function(*data)

2ème fichier:

my_function(*data):
    schoolname  = school
    cityname = city
    standard = standard
    studentname = name

dans le code ci-dessus, seules les clés du dictionnaire "data" ont été passées à my_function(), mais je veux que les paires clé-valeur soient transmises. Comment corriger cela?

Je veux que la my_function() soit modifiée comme ceci

my_function(school='DAV', standard='7', name='abc', city='delhi')

et ceci est mon exigence, donnez des réponses à cette question

EDIT: clé du dictionnaire classe est remplacé par standard

61
Patrick

Si vous voulez les utiliser comme cela, définissez la fonction avec les noms de variables comme d'habitude (mais utilisez klass pour class, vous ne pouvez pas utiliser de mots réservés):

def my_function(school, city, klass, name):
    schoolname  = school
    cityname = city
    standard = klass
    studentname = name

Maintenant (tant que vous renommez la classe en klass dans votre dictionnaire), vous pouvez utiliser ** lorsque vous appelez la fonction:

my_function(**data)

et cela fonctionnera comme vous voulez.

101
RemcoGerlich

* data interprète les arguments en tant que tuples, vous devez plutôt transmettre ** data qui interprète les arguments en tant que dictionnaire.

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']

Vous pouvez appeler la fonction comme ceci:

my_function(**data)
38
venpa

Vous pouvez simplement le passer

def my_function(my_data):
    my_data["schoolname"] = "something"
    print my_data

ou si tu veux vraiment

def my_function(**kwargs):
    kwargs["schoolname"] = "something"
    print kwargs
8
Jakob Bowyer