422

辞書を使って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)

これは可能ですか?

4

4 に答える 4

636

最終的に自分でそれを理解しました。簡単です。辞書を解凍するための**演算子がありませんでした。

したがって、私の例は次のようになります。

d = dict(p1=1, p2=2)
def f2(p1,p2):
    print p1, p2
f2(**d)
于 2008-12-02T16:53:34.640 に答える
36

Python では、これを「アンパック」と呼び、チュートリアルで少し説明しています。それのドキュメンテーションはひどいものです、私は同意します、特にそれがどれほど幻想的に役立つかという理由で。

于 2008-12-02T22:03:11.240 に答える
5

ここに行く-他の反復可能なものだけで動作します:

d = {'param' : 'test'}

def f(dictionary):
    for key in dictionary:
        print key

f(d)
于 2008-12-02T16:52:20.227 に答える