[英]Ruby - Iterating over a Nested Hash and counting values
盡管嵌套哈希有很多問題,但我沒有找到解決問題的方法。
我輸入字符串並將每個字符匹配到一個哈希,如下所示:
numberOfChars = {}
string.each_char do |c|
RULES.each do |key, value|
if c === key
numberOfChars[value] += 1
end
end
end
這項工作正常,並且會輸出類似“出現3次”的信息,直到我意識到我的哈希需要嵌套,類似於以下內容:
RULES = {
:limb {
:colour {
'a' => 'foo',
'b' => 'bar'
},
'c' => 'baz'
}
}
那么,我將如何獲取“葉子”鑰匙及其價值呢?
在遍歷哈希值的同時,還需要計算每個鍵出現多少次,例如,“ a”出現的次數多於“ b”出現的次數嗎? 如果是這樣,請向新的哈希添加一個。 但是我對於在實踐中如何工作卻一無所知,卻不知道首先如何在嵌套的哈希上進行迭代。
在我看來,這樣做似乎太費解了,但是如果有人有任何指點,他們將不勝感激!
另外,如果還不清楚,我是Ruby的新手,所以我可能會犯一些基本的錯誤。
您是否正在尋找這樣的東西?
RULES = {
:limb => {
:colour => {
'a' => 'foo',
'b' => 'bar'
},
'c' => 'baz',
:color => {
'b' => 'baz'
}
}
}
def count_letters(hash, results = {})
hash.each do |key, value|
if value.kind_of?(Hash)
count_letters(value, results)
else
results[key] = (results[key] || 0) + 1
end
end
results
end
p count_letters(RULES)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.