我创建了一个哈希哈希值,其中一天中的小时是id =>哈希的哈希的关键。零。
例如:
{0=>{1=>0, 2=>0, 3=>0, 4=>0}, 1=>{1=>0, 2=>0, 3=>0, 4=>0},
2=>{1=>0, 2=>0, 3=>0, 4=>0}, 3=>{1=>0, 2=>0, 3=>0, 4=>0},
4=>{1=>0, 2=>0, 3=>0, 4=>0}, 5=>{1=>0, 2=>0, 3=>0, 4=>0},
6=>{1=>0, 2=>0, 3=>0, 4=>0}, 7=>{1=>0, 2=>0, 3=>0, 4=>0},
8=>{1=>0, 2=>0, 3=>0, 4=>0}, 9=>{1=>0, 2=>0, 3=>0, 4=>0},
10=>{1=>0, 2=>0, 3=>0, 4=>0}, 11=>{1=>0, 2=>0, 3=>0, 4=>0},
12=>{1=>0, 2=>0, 3=>0, 4=>0}, 13=>{1=>0, 2=>0, 3=>0, 4=>0},
14=>{1=>0, 2=>0, 3=>0, 4=>0}, 15=>{1=>0, 2=>0, 3=>0, 4=>0},
16=>{1=>0, 2=>0, 3=>0, 4=>0}, 17=>{1=>0, 2=>0, 3=>0, 4=>0},
18=>{1=>0, 2=>0, 3=>0, 4=>0}, 19=>{1=>0, 2=>0, 3=>0, 4=>0},
20=>{1=>0, 2=>0, 3=>0, 4=>0}, 21=>{1=>0, 2=>0, 3=>0, 4=>0},
22=>{1=>0, 2=>0, 3=>0, 4=>0}, 23=>{1=>0, 2=>0, 3=>0, 4=>0}}
我使用此代码创建它们:
hour_hash = {}
count = (1..4).inject({}) {|m,e| m[e]=0;m}
(0..23).each do |i|
hour_hash[i]=count
end
当我尝试更新其中一个哈希中的元素时,如下所示:
hour_hash[0][3] += 1
整个哈希得到更新:
{0=>{1=>0, 2=>0, 3=>1, 4=>0}, 1=>{1=>0, 2=>0, 3=>1, 4=>0},
2=>{1=>0, 2=>0, 3=>1, 4=>0}, 3=>{1=>0, 2=>0, 3=>1, 4=>0},
4=>{1=>0, 2=>0, 3=>1, 4=>0}, 5=>{1=>0, 2=>0, 3=>1, 4=>0},
6=>{1=>0, 2=>0, 3=>1, 4=>0}, 7=>{1=>0, 2=>0, 3=>1, 4=>0},
8=>{1=>0, 2=>0, 3=>1, 4=>0}, 9=>{1=>0, 2=>0, 3=>1, 4=>0},
10=>{1=>0, 2=>0, 3=>1, 4=>0}, 11=>{1=>0, 2=>0, 3=>1, 4=>0},
12=>{1=>0, 2=>0, 3=>1, 4=>0}, 13=>{1=>0, 2=>0, 3=>1, 4=>0},
14=>{1=>0, 2=>0, 3=>1, 4=>0}, 15=>{1=>0, 2=>0, 3=>1, 4=>0},
16=>{1=>0, 2=>0, 3=>1, 4=>0}, 17=>{1=>0, 2=>0, 3=>1, 4=>0},
18=>{1=>0, 2=>0, 3=>1, 4=>0}, 19=>{1=>0, 2=>0, 3=>1, 4=>0},
20=>{1=>0, 2=>0, 3=>1, 4=>0}, 21=>{1=>0, 2=>0, 3=>1, 4=>0},
22=>{1=>0, 2=>0, 3=>1, 4=>0}, 23=>{1=>0, 2=>0, 3=>1, 4=>0}}
有人可以开导我吗?我应该能够访问哈希中的单个元素,比如hash [x] [y],对吗?非常感谢你的帮助!
答案 0 :(得分:1)
hour_hash = (0..23).each_with_object({}) do |i, h|
h[i] = (1..4).each_with_object({}){|j, h| h[j] = 0}
end
hour_hash[0][3] += 1
hour_hash # =>
{0 =&gt; {1 =&gt; 0,2 =&gt; 0,3 =&gt; 1,4 =&gt; 0},1 =&gt; {1 =&gt; 0 =&gt; 0 ,3 =&gt; 0,4 =&gt; 0},2 =&gt; {1 =&gt; 0 =&gt; 0,3 =&gt; 0,4 =&gt; 0},3 =&gt; {1 =&gt; 0,2 =&gt; 0,3 =&gt; 0,4 =&gt; 0},4 =&gt; {1 => 0,2 =&gt; 0,3 =&gt; 0,4&gt; ; 0},5 =&gt; {1 =&gt; 0,2 =&gt; 0,3 =&gt; 0,4 =&gt; 0},6 =&gt; {1 =&gt; 0 =&gt; 0 ,3 =&gt; 0,4 =&gt; 0},7 =&gt; {1 =&gt; 0 =&gt; 0,3 =&gt; 0,4 =&gt; 0},8 =&gt; {1 =&gt; 0,2 =&gt; 0,3 =&gt; 0,4 =&gt; 0},9 =&gt; {1 => 0,2 =&gt; 0,3 =&gt; 0,4&gt; ; 0},10 =&gt; {1 =&gt; 0,2 =&gt; 0,3 =&gt; 0,4 =&gt; 0},11 =&gt; {1 =&gt; 0 =&gt; 0 ,3 =&gt; 0,4 =&gt; 0},12 =&gt; {1 =&gt; 0 =&gt; 0,3 =&gt; 0,4 =&gt; 0},13 =&gt; {1 =&gt; 0,2 =&gt; 0,3 =&gt; 0,4 =&gt; 0},14 =&gt; {1 => 0,2 =&gt; 0,3 =&gt; 0,4&gt; ; 0},15 =&gt; {1 =&gt; 0,2 =&gt; 0,3 =&gt; 0,4 =&gt; 0},16 =&gt; {1 =&gt; 0 =&gt; 0 ,3 =&gt; 0,4 =&gt; 0},17 =&gt; {1 =&gt; 0 =&gt; 0,3 =&gt; 0,4 =&gt; 0},18 =&gt; {1 =&gt; 0,2 =&gt; 0,3 =&gt; 0,4 =&gt; 0},19 =&gt; {1 => 0,2 =&gt; 0,3 =&gt; 0,4&gt; ; 0},20 =&gt; {1 =&gt; 0,2 =&gt; 0,3 =&gt; 0,4 =&gt; 0},21 =&gt; {1 =&gt; 0,2 =&gt; 0 ,3 =&gt; 0,4 =&gt; 0},22 =&gt; {1 =&gt; 0, 2 =&gt; 0,3 =&gt; 0,4 =&gt; 0},23 =&gt; {1 =&gt; 0 =&gt; 0,3 =&gt; 0,4 =&gt; 0}} < / p>
答案 1 :(得分:1)
我认为你可以在这里使用Hash的默认值块:
hour_hash = Hash.new {|h, k| h[k] = {1=>0, 2=>0, 3=>0, 4=>0 } }
如果您只需要查找值,就可以在这里停下来。如果你需要&#34;空&#34;您可以添加0..23
的值:
(0..23).each {|x| hour_hash[x] }
并使用它:
hour_hash[0][3] += 1