2014-04-25 27 views
0

我有一個哈希在另一個哈希,基本上是這樣的:如何在散列哈希值中求和值?

@hash_os_versions = Hash.new{ |h,k| h[k] = Hash.new{|h, k| h[k] = 0} } 

這個哈希生成此:

operation_system => {version, count}* 

一個例子:

{"Linux"=>{"Fedora"=>4, "Debian"=>2, "OpenSUSE"=>3, "Red Hat"=>2, "Ubuntu"=>2}, "Mac OS"=>{"OS X 10.4 Tiger"=>3, "OS X 10.6 Snow Leopard"=>4, "OS X 10.5 Leopard"=>3, "OS X 10.7 Lion"=>2}, "Windows"=>{"Windows 2000"=>3, "Windows 7"=>2, "Windows 98"=>2, "Windows Vista"=>2, "Windows XP"=>2}} 

我如何可以總結的計數? 在的情況下,4 + 2 + 3 + 2 ...

我想這一點,但它不工作:

<%= sum = os_versions[1].inject(0) { |sum, tuple| sum += tuple[1] } %> 

總是返回零。

PS:抱歉,我的英語:P

回答

1

您需要使用密鑰,而不是一個索引來訪問哈希值。這應該工作。

2.0.0-p451 :006 > sum = os_versions["Mac OS"].inject(0) { |sum, tuple| sum += tuple[1] } 
=> 12 
+0

哦,當然,所以,我必須做一個循環與鍵和總結?我會試試這個,坦克=] –