["Nothing else Matters"-6ren">
gpt4 book ai didi

ruby-on-rails - Ruby:如何对 Ruby 数组进行分组?

转载 作者:数据小太阳 更新时间:2023-10-29 06:22:05 28 4
gpt4 key购买 nike

我有一个 Ruby 数组

> list = Request.find_all_by_artist("Metallica").map(&:song)
=> ["Nothing else Matters", "Enter sandman", "Enter Sandman", "Master of Puppets", "Master of Puppets", "Master of Puppets"]

我想要一个包含这样计数的列表:

{"Nothing Else Matters" => 1,
"Enter Sandman" => 2,
"Master of Puppets" => 3}

所以理想情况下,我想要一个散列,它会给我计数并注意我如何使用 Enter Sandmanenter sandman 所以我需要它不区分大小写。我很确定我可以遍历它,但是有没有更简洁的方法?

最佳答案

list.group_by(&:capitalize).map {|k,v| [k, v.length]}
#=> [["Master of puppets", 3], ["Enter sandman", 2], ["Nothing else matters", 1]]

group by 创建一个散列,从专辑名称的 capitalized 版本到包含 list 中匹配它的所有字符串的数组(例如 "输入沙人"=> ["输入沙人", "输入沙人"])。 map 然后用它的长度替换每个数组,所以你得到例如["Enter sandman", 2] for "Enter sandman".

如果您需要将结果作为散列,您可以对结果调用 to_h 或将其包裹在 Hash[ ] 中。

关于ruby-on-rails - Ruby:如何对 Ruby 数组进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3884829/

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