首页 > 解决方案 > 有没有一种优雅的方法可以在 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每个类都是唯一的,但method_one存在于所有子类中,每个子类都采用相同的基本参数(arg_1& arg_2)和不同数量的列表参数(始终为 length n)。

有没有一种方法可以在父类中kwargs编写一个适用于所有孩子的单曲?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]解包 . 中所有列表参数的键和关联值的第 i 个元素kwargs

标签: pythonlistinheritanceindexingkeyword-argument

解决方案


如果我理解正确,您可以将字典理解传递给**解包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()}
        )

推荐阅读