[英]Ruby hash of arrays
所以我有一個像這樣的哈希:
hash = { "a"=>[1, 2, 3], "b"=>[18, 21, 9] }
我想獲取整個數組,而不僅僅是值。
看來這應該工作:
hash.each{|key,value| value}
[1, 2, 3]
[18, 21, 9]
但是我得到的是array-1、2、3的各個元素。我知道我可以進行hash.values運算,但這給出了沒有鍵的數組數組。 我需要鍵/值(數組)對。 有什么想法嗎?
您所描述的確實按預期工作:
=> {"a"=>[1, 2, 3], "b"=>[18, 21, 9]}
[4] pry(main)> hash.each { |k,v| puts v.length }
3
3
您可以張貼一段代碼說明您的特定問題嗎?
您的構造確實會為您提供整個陣列:
irb(main):001:0> hash = { "a" => [1, 2, 3], "b" => [18, 21, 9] }
=> {"a"=>[1, 2, 3], "b"=>[18, 21, 9]}
irb(main):002:0> hash.each{ |key,value| puts value.class.name }
Array
Array
也許您只是想puts
一個數組? 如果是這樣,則默認情況下會將每個元素放在單獨的行上。
irb(main):003:0> puts [1,2,3]
1
2
3
不知道我是否完全理解,但是您是否要求這樣(使用.to_a
):
hash = { "a"=>[1, 2, 3], "b"=>[18, 21, 9] }
=> {"a"=>[1, 2, 3], "b"=>[18, 21, 9]}
arr = hash.to_a
=> [["a", [1, 2, 3]], ["b", [18, 21, 9]]]
嘗試這個:
hash.map { |k,v| { k => v} }
它返回:
{"a"=>[1, 2, 3]}
{"b"=>[18, 21, 9]}
這是你想要的嗎?
hash.map{|key,value| [key]+value }
=> [["a", 1, 2, 3], ["b", 18, 21, 9]]
如果你有這個
hash = { "a"=>[1, 2, 3], "b"=>[18, 21, 9] }
並且您只需要使用鍵訪問器就可以返回整個數組。 例如
hash[:a] = [1, 2, 3]
hash[:b] = [18, 21, 9]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.