gpt4 book ai didi

arrays - Ruby:将数组映射到散列,在散列内创建一个数组

转载 作者:数据小太阳 更新时间:2023-10-29 08:59:55 25 4
gpt4 key购买 nike

我正在创建一个简单的分析图表,为了避免实时进行繁重的查询,我需要将缓存的结果数据集保存在一个专门用于这些统计信息的表中。

任何用户尝试一些类(class),我想使用状态保存类(class)的 ID。所以像

{ "invited": [1,3,6], "done": [2,9] }

我写这个函数

u.courses.map { |w| [w.status, []<<w.id]  }.to_h

当然,每次迭代我的数组都会被初始化,所以我有

{"invited"=>[5101]}

如果我尝试

u.courses.map { |w| [w.status, []<<w.id]  }

我得到

[["invited", [1]], ["invited", [748]], ["invited", [1445]], ["invited", [2113]], ["invited", [2833]], ["invited", [6017]], ["invited", [4146]], ["invited", [5101]]]

如何在第一次迭代时创建数组并将其保留在我的 map 中?

最佳答案

你可以试试each_with_object :

u.courses.each_with_object({}){|w, o| (o[w.status] ||= []) << w.id}

reduce/inject :

u.courses.reduce({}){|o, w| (o[w.status] ||= []) << w.id}

关于arrays - Ruby:将数组映射到散列,在散列内创建一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38384083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com