You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用map/grep单行语句汇总指定receipt_id的payment_id对应金额?

单行map/grep实现方案

要实现按payment_id分组,累加指定receipt_id(如'100')对应的payment_amount,可以借助临时哈希在do块内完成累加,单行代码如下:

my %sum_by_payment_id = do { my %temp; map { $temp{$_->{payment_id}} += $_->{payment_amount} } grep { $_->{receipt_id} eq '100' } @$payments; %temp };

代码说明:

  • grep { $_->{receipt_id} eq '100' } @$payments:先过滤出所有receipt_id为'100'的支付记录
  • map { $temp{$_->{payment_id}} += $_->{payment_amount} } ...:遍历过滤后的记录,将每个payment_id对应的金额累加到临时哈希%temp中
  • do {}块:创建局部作用域的临时哈希,避免污染外部变量空间,最后将临时哈希展开为键值对赋值给目标哈希%sum_by_payment_id

之前仅拿到最后一笔金额的原因是直接用map生成哈希时,相同payment_id的后续项会覆盖之前的值,而通过临时哈希累加就能解决这个问题。

内容的提问来源于stack exchange,提问作者ComputersAreNeat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 14:34:56