2017-05-08 43 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