python函数返回元组平均数_python – 解包函数将元组返回到键值对

假设我有一个返回元组的函数:

def foo(x):

return (x, x*100)

我有一个值列表,我想要应用该函数,然后将结果转换为字典:

list_of_vals = [2, 4, 6]

result = {...magic comprehension...}

print(result)

# {2: 200, 4: 400, 6: 600}

我想出了两种方法:

{ k: v for k, v in map(foo, list_of_vals)}

{ k: v for k, v in (foo(val) for val in list_of_vals} # equivalently

要么:

def helper_bar(vals):

for val in vals:

yield(foo(val))

{k: v for k, v in helper_bar(vals)}

但是,这些都不是非常易读.此外,如果list_of_vals非常庞大,我不想创建额外的副本.假设我有很长的值列表并且foo是一个昂贵的函数,有没有更好的(有效的?)方法来做到这一点?

解决方法:

您还可以使用带有可迭代键值元组的dict initializator.所以这对于已经返回元组的函数来说是完美的:

>>> dict(map(foo, list_of_vals))

{2: 200, 4: 400, 6: 600}

通常,具有返回具有相同键的键值元组的函数似乎有点罕见.最常见的是,您只需要一个返回值的函数.在这些情况下,您将使用这样的字典理解:

{ x: foo(x) for x in list_of_vals }

标签:python,python-3-x

来源: https://codeday.me/bug/20190727/1549441.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值