web-dev-qa-db-ja.com

Pythonで辞書項目を関数引数として渡す方法は?

私のコード

最初のファイル:

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

2番目のファイル:

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

上記のコードでは、「データ」ディクショナリのキーのみがmy_function()に渡されましたが、キーと値のペアを渡したいです。これを修正するには?

my_function()をこのように変更したい

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

これが私の要件であり、これに従って回答を与えます

編集:辞書キークラス標準に変更されました

61
Patrick

そのように使用したい場合は、変数名を使用して関数を通常どおり定義します(ただし、klassにはclassを使用します。予約語は使用できません)。

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

(辞書でクラスの名前をklassに変更する限り)callのときに**を使用できます:

my_function(**data)

望みどおりに機能します。

101
RemcoGerlich

* dataは引数をタプルとして解釈しますが、引数を辞書として解釈する** dataを渡す必要があります。

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

次のような関数を呼び出すことができます。

my_function(**data)
38
venpa

あなたはそれを渡すことができます

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

または本当にしたい場合

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