2014-02-24 59 views
41

我的代碼如何將字典項目作爲函數參數傳遞給python?

一號文件:

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

第二個文件:

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

,這是我的要求,根據本

編輯給出答案:辭典鍵改爲標準

+7

不要使用變量名是在Python默認的對象,如單詞'class'。 – Torxed

回答

67

如果你想使用它們那樣,定義與變量名正常功能(但使用klassclass,則不能使用保留字):

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

現在(只要你重命名類在你的字典克拉斯),可以使用**當你通話功能:

my_function(**data) 

它會按你的意願工作。

+0

我有這條線def my_function(*數據),根據此行修改您的代碼 – Patrick

+2

你的意思是重新編譯整個Python解釋器工作就像你想它的工作? – markcial

+0

@markcial是否有任何方法來實現代碼,因爲我喜歡? – Patrick

5

你可以通過它

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

,或者如果你真的想

def my_function(**kwargs): 
    kwargs["schoolname"] = "something" 
    print kwargs 
+0

使我的日子:-) – babygame0ver

23

*數據將參數解釋爲元組,而不是必須傳遞**將數據解釋爲字典的數據。

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) 
相關問題