我想在Python中使用字典調用函數。將字典傳遞給python中的函數作爲關鍵字參數
下面是一些代碼:
d = dict(param='test')
def f(param):
print param
f(d)
這將打印{'param': 'test'}
但我想它只是打印test
。
我想它更多的參數同樣的工作:
d = dict(p1=1, p2=2)
def f2(p1,p2):
print p1, p2
f2(d)
這可能嗎?
我想在Python中使用字典調用函數。將字典傳遞給python中的函數作爲關鍵字參數
下面是一些代碼:
d = dict(param='test')
def f(param):
print param
f(d)
這將打印{'param': 'test'}
但我想它只是打印test
。
我想它更多的參數同樣的工作:
d = dict(p1=1, p2=2)
def f2(p1,p2):
print p1, p2
f2(d)
這可能嗎?
想通了爲自己到底。這很簡單,我只是缺少**操作解壓字典
所以我的例子就變成:
d = dict(p1=1, p2=2)
def f2(p1,p2):
print p1, p2
f2(**d)
這裏亞去 - 工作只是任何其他迭代:
d = {'param' : 'test'}
def f(dictionary):
for key in dictionary:
print key
f(d)
似乎人們在回答原來的問題,而不是回答的問題時,正在對此進行壓制。我建議現在刪除這個帖子。 – dotancohen 2013-12-10 08:00:03
@dotancohen不,它從來都不是正確的,它沒有通過問題的第二塊代碼。它從字面上看,印刷是一個例子。 – 2014-02-26 21:28:08
它確實回答了這個問題,但它不是通過字典解包來完成的。根據發佈的問題,他的方法完全有效。 – Natecat 2016-11-30 01:19:20
在Python中,這就是所謂的「解包」,你可以找到一些關於它在tutorial。它的文檔很爛,我同意,特別是因爲它有多麼幻想有用。
一些額外的細節,可能有助於瞭解(問題我看完這個去和測試):
實例:
In[3]: def test(a=4, b=2):
...: print a, b
...:
數1:該函數可以具有未包含在字典中的參數
In[6]: mydict = {'a': 100}
In[7]: test(**mydict)
100 2
數量2:不能覆蓋已存在於字典中的參數
In[8]: mydict = {'a': 100, 'b': 200}
In[9]: test(a=3, **mydict)
TypeError: test() got multiple values for keyword argument 'a'
編號3:字典中不能包含不在函數中的參數。
In[10]: mydict = {'a': 100, 'b': 200, 'c': 300}
In[11]: test(**mydict)
TypeError: test() got an unexpected keyword argument 'c'
如果你想要這個幫助別人,你應該重新說明你的問題:問題不是傳遞字典,你想要的是將字典轉換爲關鍵字參數 – Javier 2008-12-02 17:28:17