【问题标题】:Creating a tuple out of *args从 *args 创建一个元组
【发布时间】:2016-12-07 23:22:12
【问题描述】:

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

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) 中的一个语句

【问题讨论】:

  • 不太清楚你想做什么。你能举一个(或两个)你想要的输入/输出的例子吗?
  • 不清楚...my_dict 在这个...字典列表中是什么?您想从my_dict 的每个元素中获取不同的字段吗?
  • 你到底在问什么?从函数参数创建元组?所以你想要返回元组的函数?
  • *args 已经创建了一个元组 - args,在函数内部,将是('field1', 'field2')

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


【解决方案1】:

您可以通过对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')

【讨论】:

  • 没关系,其实功能比较复杂,包括字典。我使它更简单,所以问题更清楚。再次感谢!
【解决方案2】:

只需照常引用这些参数:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多