从 *args 创建一个元组

Creating a tuple out of *args

我试过了,但到目前为止我还想不通。 我想创建一个元组列表,每个元组都是由字典值构建的:

my_list = [(x['field1'], x['field2']) for x in my_dict]

但问题是我想在函数内部执行此操作,将我想要获取的字段传递给 *args:

my_func('field1', 'field2')

如何从 *args 列表构建第一个列表理解?

谢谢!

我会尽力澄清:

简单地说,我想做的是映射这个:

my_func('field1', 'field2')

为此:

tuple(x['field1'], x['field2'])

这将是 my_func(*args)

中的一个语句

只需正常引用这些参数即可:

def f(d, a, b):
    return [(x[a], x[b]) for x in d]

result = f(my_dict, 'field1', 'field2')

您可以通过对 args 进行另一种理解来创建 tuple

def my_func(*args):
    return [tuple(x[arg] for arg in args) for x in my_dict]

然而,这假定您的 my_dict 是一个全局变量。但现在您可以像使用 my_func('field1', 'field2').

指定的那样调用它

我建议将字典添加到函数定义中:

def my_func(my_dict, *args):
    return [tuple(x[arg] for arg in args) for x in my_dict]

并将其命名为 my_func(my_dict, 'field1', 'field2')