ruby-on-rails - 在 Ruby 2.6.3 中合并 2 个哈希并创建第三个新哈希
问题描述
我希望从以下两个哈希中创建一个新的哈希。
invoiced_data =
{"Jan 2020"=>0, "Feb 2020"=>0, "Mar 2020"=>0, "Apr 2020"=>0,
"May 2020"=>0, "Jun 2020"=>0, "Jul 2020"=>0.331027548e7,
"Aug 2020"=>0.31668664e6, "Sep 2020"=>0, "Oct 2020"=>0,
"Nov 2020"=>0, "Dec 2020"=>0}
payment_transaction_data =
{"Jul 2020"=>400.0, "Aug 2020"=>26924.0}
后一个散列的所有键都是前一个散列的键。后一个哈希可能为空。
我希望构造的散列具有与invoiced_data
. 这些键的值是带有键:Invoiced_data
和的散列:payment_transaction_type
。的值:Invoiced_data
是invoiced_data
给定键的值,而 的值:payment_transaction_type
是给定键的值payment_transaction_data
,如果键存在,否则为零。我需要的结果如下。
{"Jan 2020": {Invoiced_data: 0, payment_transaction_data: 0},
"Feb 2020": {Invoiced_data: 0, payment_transaction_data: 0},
"Mar 2020": {Invoiced_data: 0, payment_transaction_data: 0},
"Apr 2020": {Invoiced_data: 0, payment_transaction_data: 0},
"May 2020": {Invoiced_data: 0, payment_transaction_data: 0},
"Jun 2020": {Invoiced_data: 0, payment_transaction_data: 0},
"Jul 2020": {Invoiced_data: 3310275.48, payment_transaction_data: 400.0},
"Aug 2020": {Invoiced_data: 316686.64, payment_transaction_data: 26924.0},
"Sep 2020": {Invoiced_data: 0, payment_transaction_data: 0},
"Oct 2020": {Invoiced_data: 0, payment_transaction_data: 0},
"Nov 2020": {Invoiced_data: 0, payment_transaction_data: 0},
"Dec 2020": {Invoiced_data: 0, payment_transaction_data: 0}}
解决方案
我很确定它可能会更优化,但更快的解决方案:
a
=> {"Jan 2020"=>0, "Feb 2020"=>0, "Mar 2020"=>0, "Apr 2020"=>0, "May 2020"=>0, "Jun 2020"=>0, "Jul 2020"=>3310275.48, "Aug 2020"=>316686.64, "Sep 2020"=>0, "Oct 2020"=>0, "Nov 2020"=>0, "Dec 2020"=>0}
b
=> {"Jul 2020"=>400.0, "Aug 2020"=>26924.0}
a.map do |k, v|
[k, { Invoiced_data: v || 0, payment_transaction_data: b[k] || 0 }]
end.to_h
=> {"Jan 2020"=>{:Invoiced_data=>0, :payment_transaction_data=>0}, "Feb 2020"=>{:Invoiced_data=>0, :payment_transaction_data=>0}, "Mar 2020"=>{:Invoiced_data=>0, :payment_transaction_data=>0}, "Apr 2020"=>{:Invoiced_data=>0, :payment_transaction_data=>0}, "May 2020"=>{:Invoiced_data=>0, :payment_transaction_data=>0}, "Jun 2020"=>{:Invoiced_data=>0, :payment_transaction_data=>0}, "Jul 2020"=>{:Invoiced_data=>3310275.48, :payment_transaction_data=>400.0}, "Aug 2020"=>{:Invoiced_data=>316686.64, :payment_transaction_data=>26924.0}, "Sep 2020"=>{:Invoiced_data=>0, :payment_transaction_data=>0}, "Oct 2020"=>{:Invoiced_data=>0, :payment_transaction_data=>0}, "Nov 2020"=>{:Invoiced_data=>0, :payment_transaction_data=>0}, "Dec 2020"=>{:Invoiced_data=>0, :payment_transaction_data=>0}}
推荐阅读
- reactjs - 如何仅使用 REST api 使用 Spring Boot 实现 Github OAuth2 登录?
- r - 返回模拟定价结果
- raspberry-pi - Raspberry Pi 作为 WLAN 热点和 LAN 上的静态 IP
- javascript - 如何在 React JS 中使用三元运算符将 Font Awesome Icons 与文本一起使用?
- server - 在 2 个服务器之间自动同步和镜像数据 cPanel
- github - Github/Gitlab Repository 总分
- python - Python电报机器人:调用函数的InlineKeyboardButton
- spring - 我可以使用 EntityGraph 从实体中选择特定字段吗?
- python - OpenCV、Python:航拍图像拼接中的透视变形问题
- python - 根据 Elasticsearch 中的字段值对记录进行排名