将多个字典作为参数传递给函数

sci*_*thx 10 python dictionary arguments

我有两个词典:

SP = dict{'key1': 'value1','key2': 'value2'}
CP = dict{'key1': 'value1','key2': 'value2'}
Run Code Online (Sandbox Code Playgroud)

我有一个函数,想把这两个词典作为输入,但我不知道该怎么做.

我试过了:

def test(**SP,**CP):
    print SP.keys(),CP.keys()

test(**SP,**CP)
Run Code Online (Sandbox Code Playgroud)

通过对两个词典的大量修改,实际功能将更加复杂.但简单的测试功能对我不起作用:(

Bre*_*arn 6

如果您只想将两个词典作为单独的参数,那就行了

def test(SP, CP):
    print SP.keys(),CP.keys()

test(SP, CP)
Run Code Online (Sandbox Code Playgroud)

**当您希望将字典的各个键/值对作为单独的关键字参数传递时才使用.如果您将整个字典作为单个参数传递,则只需传递它,就像使用任何其他参数值一样.


小智 6

您可以使用dict构造函数将两个字典( SPCP)合并为一个字典。

test(**dict(SP,**CP))
Run Code Online (Sandbox Code Playgroud)

  • 如果您愿意,也可以使用“test(**{**SP,**CP})”。(可能是因为你对不对称或“字典”这个词过敏。) (2认同)

JLT*_*JLT 5

当您要将两个不同的字典传递给均包含该函数的参数的函数时,应首先合并两个字典。

例如:

dicA = {'spam':3, 'egg':4}
dicB = {'bacon':5, 'tomato':6}

def test(spam,tomato,**kwargs):
    print spam,tomato

#you cannot use:
#test(**dicA, **dicB)
Run Code Online (Sandbox Code Playgroud)

因此,您必须合并两个字典。有几种选择:请参见如何在一个表达式中合并两个Python字典?

dicC = dicA.copy()
dicC.update(dicB)

#so now one can use:
test(**dicC)

>> 3 6
Run Code Online (Sandbox Code Playgroud)