{"morning"=>["John", "Katie", "Dave"],"afternoon"=>["Anne", "Ch-6ren">
gpt4 book ai didi

ruby - 使用数组作为内部值创建一个 ruby​​ 嵌套哈希

转载 作者:行者123 更新时间:2023-12-03 17:55:18 26 4
gpt4 key购买 nike

我正在尝试创建一个嵌套哈希,其中内部值是数组。例如

{"monday"=>{"morning"=>["John", "Katie", "Dave"],"afternoon"=>["Anne", "Charlie"]}, 
"tuesday"=>{"morning"=>["Joe"],"afternoon"=>["Chris","Tim","Melissa"]}}
我试过
h = Hash.new( |hash, key| hash[key] = Hash.new([]) }
当我尝试
h["monday"]["morning"].append("Ben")
看看h,我明白了
{"monday" => {}}
而不是
{"monday" => {"morning"=>["Ben"]}}
我对 Ruby 很陌生,对于获得我想要的功能有什么建议吗?

最佳答案

关闭,您必须初始化一个新哈希作为初始键的值,并将一个数组设置为嵌套哈希的值:

h = Hash.new { |hash, key| hash[key] = Hash.new { |k, v| k[v] = Array.new } }

h["monday"]["morning"] << "Ben"

{"monday"=>{"morning"=>["Ben"]}}
这样您就不必在每次想要推送一个值时初始化一个数组。键将与您在初始参数中设置的一样,第二个参数将创建一个嵌套散列,其中值将是您可以使用“<<”推送到的数组。这是在实时代码中使用的解决方案吗?不,它不是很易读,但解释了一种构造数据对象以满足您的需求的方法。

关于ruby - 使用数组作为内部值创建一个 ruby​​ 嵌套哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62882032/

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