从 *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')
我试过了,但到目前为止我还想不通。 我想创建一个元组列表,每个元组都是由字典值构建的:
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')