我有一个散列(见下面),我需要分组,但我不知道如何做。我将在iOS (Rubymotion)中的表节中使用这个数组。
散列如下所示,我想按行业分组:
[{"firstname" => "John", "lastname" => "Wayne", "profession" => "actor"},{"firstname" => "Oliva", "lastname" => "Newton", "profession" => "actor"},{"firstname" => "Terry", "lastname" => "Gilliam", "profession" => "director"}]我需要它看起来像这样:
["actor" => [{"firstname" => "John", "lastname" => "Wayne", "profession" => "actor"},{"firstname" => "Oliva", "lastname" => "Newton", "profession" => "actor"}], "director" =>[{"firstname" => "Terry", "lastname" => "Gilliam", "profession" => "director"}]更新
如果我能得到这个结构,那就太好了:
{
"profession" => "actor",
"people" =>
[
{"firstname"=>"John", "lastname"=>"Wayne", "profession"=>"actor"},
{"firstname" => "Oliva", "lastname" => "Newton", "profession" => "actor"}
],
"profession" => "director",
"people" =>
[
{"firstname" => "Terry", "lastname" => "Gilliam", "profession" => "director"}
]
}发布于 2014-02-20 10:22:23
使用Enumerable#group_by如下所示:
a = [
{"firstname" => "John", "lastname" => "Wayne", "profession" => "actor"},
{"firstname" => "Oliva", "lastname" => "Newton", "profession" => "actor"},
{"firstname" => "Terry", "lastname" => "Gilliam", "profession" => "director"}
]
a.group_by { |h| h["profession"] }输出:
{ "actor"=> [
{"firstname"=>"John", "lastname"=>"Wayne", "profession"=>"actor"},
{"firstname"=>"Oliva", "lastname"=>"Newton", "profession"=>"actor"}
],
"director"=> [
{"firstname"=>"Terry", "lastname"=>"Gilliam", "profession"=>"director"}
]
}update (正如@mdesantis 所提到的,您的预期输出不是正确的,所以我确实将结构更改为有意义的内容。
a = [
{"firstname" => "John", "lastname" => "Wayne", "profession" => "actor"},
{"firstname" => "Oliva", "lastname" => "Newton", "profession" => "actor"},
{"firstname" => "Terry", "lastname" => "Gilliam", "profession" => "director"}
]
result_hash = a.group_by { |h| h["profession"] }.map do |key,val|
{"profession" => key, "people" => val}
end
p result_hash输出
[
{"profession"=>"actor",
"people"=> [ {"firstname"=>"John", "lastname"=>"Wayne", "profession"=>"actor"},
{"firstname"=>"Oliva", "lastname"=>"Newton", "profession" =>"actor"}
]
},
{"profession"=>"director",
"people"=>[ {"firstname"=>"Terry", "lastname"=>"Gilliam", "profession"=>"director"}
]
}
]https://stackoverflow.com/questions/21904737
复制相似问题