2017-05-08 42 views
0

我有这样一个哈希:红宝石回报率得到哈希键和值分别

hash = {"str1"=>5, "str2"=>9, "str3"=> 3} 

hash.keys给出结果["str1", "str2", "str3"]

hash.values给出结果[5, 9, 3]

我想导出为Axlsx使用sheet.add_row

sheet.add_row [hash.keys[0], hash.values[0]] # hash.keys[0] = "str1" and hash.values[0] = 5 
sheet.add_row [hash.keys[1], hash.values[1]] # hash.keys[1] = "str2" and hash.values[1] = 9 
sheet.add_row [hash.keys[2], hash.values[2]] # hash.keys[2] = "str3" and hash.values[2] = 3 

在一个Excel工作表,这是结果

str

这很简单,如果哈希并不大,但是如果它由20元以上的例子,这样做这样是不是之实践,在所有! 我想以更好的方式为散列的所有元素执行此操作。

sheet.add_row [hash.keys[0], hash.values[0]] 
sheet.add_row [hash.keys[1], hash.values[1]] 
sheet.add_row [hash.keys[2], hash.values[2]] 
........ 
sheet.add_row [hash.keys[19], hash.values[19]] 

回答

6

只需使用Hash#each遍历每个键 - 值对:

hash = {"str1"=>5, "str2"=>9, "str3"=> 3} 
hash.each { |k, v| sheet.add_row [k, v] } 
+0

它说我'各”的零未定义的方法:NilClass'这就是为什么我试图单独的键和值,所以我可以使用'each'方法 – media

+0

@media这个错误意味着'hash'是'nil',仅此而已。再检查一遍。 –

+0

谢谢@Andrey Deineko,它的工作! (这只是我的打字错误) – media