用* args创建一个元组

时间:2016-12-07 23:22:12

标签: python tuples list-comprehension args iterable-unpacking

我已经尝试过了,但到目前为止我无法解决这个问题。 我想创建一个元组列表,每个元组都是由字典值构建的:

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)

中的一个声明

2 个答案:

答案 0 :(得分:1)

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

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')

答案 1 :(得分:0)

简单地将这些论点称为正常:

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

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