有没有一种优雅的方法可以同时解包和索引 python 中的关键字参数?
Is there an elegant way to simultaneously unpack and index key word arguments in python?
我有一个方法接受一些基本参数 (arg_1
& arg_2
) 以及一些 n
元素列表,然后在嵌套方法调用中使用这些参数,每个列表元素一次,如下所示:
def method_one(self, a=arg_1, b=arg_2, list_1, list_2):
for i in range(n):
method_two(a=arg_1, b=arg_2, c=list_1[i], d=list_2[i])
method_two
对每个 class 都是唯一的,但是 method_one
存在于所有子 classes 中,每个都采用相同的基本参数(arg_1
& arg_2
) 和不同数量的列表参数(总是长度 n
)。
有没有一种方法可以使用 kwargs
在父 class 中编写一个适用于所有子项的 method_one
?类似于:
def method_one(self, a=arg_1, b=arg_2, **kwargs):
for i in range(n):
method_two(a=arg_1, b=arg_2, **kwargs[i])
以 **kwargs[i]
解压缩密钥,以及 kwargs
中所有列表参数的关联值的第 i 个元素。
如果我理解正确,您可以将字典理解传递给 method_two
中的 **
解包:
def method_one(self, arg_1, arg_2, **kwargs):
for i in range(n):
method_two(
arg_1, arg_2,
**{name: value[i] for name, value in kwargs.items()}
)
我有一个方法接受一些基本参数 (arg_1
& arg_2
) 以及一些 n
元素列表,然后在嵌套方法调用中使用这些参数,每个列表元素一次,如下所示:
def method_one(self, a=arg_1, b=arg_2, list_1, list_2):
for i in range(n):
method_two(a=arg_1, b=arg_2, c=list_1[i], d=list_2[i])
method_two
对每个 class 都是唯一的,但是 method_one
存在于所有子 classes 中,每个都采用相同的基本参数(arg_1
& arg_2
) 和不同数量的列表参数(总是长度 n
)。
有没有一种方法可以使用 kwargs
在父 class 中编写一个适用于所有子项的 method_one
?类似于:
def method_one(self, a=arg_1, b=arg_2, **kwargs):
for i in range(n):
method_two(a=arg_1, b=arg_2, **kwargs[i])
以 **kwargs[i]
解压缩密钥,以及 kwargs
中所有列表参数的关联值的第 i 个元素。
如果我理解正确,您可以将字典理解传递给 method_two
中的 **
解包:
def method_one(self, arg_1, arg_2, **kwargs):
for i in range(n):
method_two(
arg_1, arg_2,
**{name: value[i] for name, value in kwargs.items()}
)