- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
"2", :c=>"1"}, {:a=>"2017-01-01", :b=>"2", :c=>"2"}, {:a=>"2017-0-6ren">
我有一个这样的数组:
[{:a=>"2017-01-01", :b=>"2", :c=>"1"}, {:a=>"2017-01-01", :b=>"2", :c=>"2"}, {:a=>"2017-01-02", :b=>"5", :c=>"1"}]
例如,如果我用键“:a”对数组进行分组,结果是:
p = y.group_by { |g| g[:a]}
=> {"2017-01-01"=>[{:a=>"2017-01-01", :b=>"2", :c=>"1"}, {:a=>"2017-01-01", :b=>"2", :c=>"2"}], "2017-01-02"=>[{:a=>"2017-01-02", :b=>"5", :c=>"1"}]}
现在我想为每个“:a”分组键“:b”,如:
=> {"2017-01-01"=>["2" => [{:a => "2017-01-01", :b => "2", :c => "1" }], ... }
我该怎么办?提前致谢。
编辑:
多个group by ... 1°group_by a,2°group_by b 1°等的结果。
y.group_by {|g| g[:a]}.map do |k,v|
[
k, v.group_by { |d| d[:b] }.map do |p,q|
[p, q.group_by { |f| f[:c] }]
end.to_h
]
end.to_h
最佳答案
快速回答,使用上面的代码:
y = [{:a=>"2017-01-01", :b=>"2", :c=>"1"}, {:a=>"2017-01-01", :b=>"2", :c=>"2"}, {:a=>"2017-01-02", :b=>"5", :c=>"1"}]
p = y.group_by { |g| g[:a]}
q = p.map {|date, list| [date, list.group_by {|g| g[:b]}]}.to_h
这给出了期望的结果:
q == {
"2017-01-01" => {
"2"=> [
{:a=>"2017-01-01", :b=>"2", :c=>"1"},
{:a=>"2017-01-01", :b=>"2", :c=>"2"}
]
},
"2017-01-02" => {
"5"=> [
{:a=>"2017-01-02", :b=>"5", :c=>"1"}
]
}
}
如果您使用 Rails v4.2+ project,这种将散列映射到数组列表,然后将其转换回散列(使用 to_h
)的稍微奇怪的模式可以稍微简化, 通过使用 Hash#transform_values
:
p.transform_values {|list| list.group_by {|g| g[:b]}}
然而话虽如此,像这样操作复杂的嵌套哈希对象通常被认为是不好的做法。如果您的代码变得过于复杂,您可能希望考虑以更加面向对象的方式重新设计它的工作方式。
关于数组的 Ruby 多个 group_by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42135977/
我有一个 data.frame,例如 df1 % summarise(no.c = n(), m.costs = mean(cost)) 通过 id 计算观测值的数
问题:我想使用 dplyr/tibble add_row。我想在我的示例中按 A 对数据进行分组,然后 add_row 包含组名 A,然后是 B 的值。 我面临的问题是尝试在 A 下的列中添加 Gro
Ruby 有这个很棒的方法 group_by对于可枚举的。 Elixir 有类似的东西吗?我在 Enum 模块上找不到此功能。谢谢 最佳答案 还没有。我们还没有添加它,因为我们正在等待 map 。它将
我有 30 个传感器的 CO2 测量数据,这些传感器不会同时测量,也不会完全在同一时间开始。我想尽可能地对齐它们,所以我认为取 10s 的平均值可能是一个很好的解决方案。 在上一个问题中:Group
我有数据和图表,就像我在下面给出的示例一样。 我想要第三个“条件”,即给定年份和月份的条件 A 和条件 B 的总金额。我不知道该怎么做,因为 Condition 包含在 group_by 语句中。特别
我有一组看起来像这样的数据: +----------+------------+-------+-------+ | step1 | step2 | step3 | step4 | +
下面是我的示例,让我解释一下我正在尝试做的事情,尽管它并没有像我想要的那样工作。 我需要找到同一个人在同一日期的 z 列中有 2 个以上唯一值的所有实例。但是,我需要找到 z 列中特定值列表的位置。
我有一些数据如下所示: cusip date start_date end_date 1 00036020 2011-01-31 2011-07-29 2012-06-30
我在 codeigniter 中有这个问题: 我尝试从数据库制作导航树系统。 模型: function getServices() { $this->db->select('service_url,
我想使用dplyr进行一些数据操作。背景:我有一个调查权重和一堆变量(主要是Likert项)。我想对带有或不带有调查权重的每个类别的频率和百分比求和。 例如,让我们只使用频率作为性别变量。结果应该是这
我正在处理大型(最少 8 百万行)dataframes并希望根据几个分组变量和 rmultinom 进行一些基本计算.就我的代码而言,完成计算至少需要约 1 秒,这不是问题,但我需要执行数千次,所以我
我将 flask 用作带有 sqlalchemy 的 python 框架。这些模型使用 query_property 帮助我构建查询: class Person(object): qu
我正在使用 R 编程语言。 我有以下数据集: library(dplyr) df = structure(list(ethnicity = c("c", "c", "c", "b", "c", "b"
我有数据集,df, Subject Folder Message Date A Out 9/9/2019 5
我的数据库看起来(有点)像这样: Table 'posts': ID title text 62 Trees in Europe You can find fine t
我的一些组合值在文本字段中有逗号,有没有办法可以指定要连接的字符,而不是逗号? 最佳答案 在 mysql documentation你可以找到完整的语法 GROUP_CONCAT([DISTINCT]
我想根据内容对数组的字符串元素进行分组。 ["abc", "abc", "def", "ghi", "ghi"].group_by { |x|一些代码 所以我希望它返回: [["abc", "abc"
Python 3.6我有一个简单的对象列表: for obj in obj_ts: print(obj['address']) 这告诉我: mwpJCSEEkphA1utQGA2Y9Vx8cu
我有一个名为 questions 的表,其中包含以下行: questions.id | questions.target_username 1 | every.one 2
我的数组是 fruits = [["apple", "Tue"], ["mango", "Mon"], ["apple", "Wed"], ["orange", "Tue"]] 我要得到的结果是Gro
我是一名优秀的程序员,十分优秀!