如何通过数字索引获取哈希值

哈希:

h = {:a => "val1", :b => "val2", :c => "val3"} 

我可以参考哈希值:

 h[:a], h[:c] 

但我想通过数字索引来引用:

 h[0] => val1 h[2] => val3 

可能吗?

 h = {:a => "val1", :b => "val2", :c => "val3"} keys = h.keys h[keys[0]] # "val1" h[keys[2]] # "val3" 

h.values会给你一个请求的数组。

 > h.values # ⇒ [ # [0] "val1", # [1] "val2", # [2] "val3" # ] 

UPD虽然h[h.keys[0]]的答案被标记为正确,但我对基准测试有点好奇:

 h = {:a => "val1", :b => "val2", :c => "val3"} Benchmark.bm do |x| x.report { 1_000_000.times { h[h.keys[0]] = 'ghgh'} } x.report { 1_000_000.times { h.values[0] = 'ghgh'} } end # # user system total real # 0.920000 0.000000 0.920000 ( 0.922456) # 0.820000 0.000000 0.820000 ( 0.824592) 

看起来我们正在吐出10%的生产力。

那么你需要数组索引和哈希索引吗?

如果只需要第一个,请使用数组。

否则,您可以执行以下操作:

 h.values[0] h.values[1]