創建方法時,發現一個數組的方式,我看到人們通過使用默認值0
哈希迭代陣列上:找到一個陣列的模式在Ruby中
def mode(array)
hash = Hash.new(0)
array.each do |i|
hash[i]+=1
end
end
或
freq = arr.inject(Hash.new(0)) { |h,v| h[v] += 1; h }
有人可以解釋塊的以下部分?
hash[i] = hash[i] + 1 or h[v] = h[v] + 1
迭代器如何知道將+1
添加到散列的每個唯一鍵?例如:
array = [1,1,1,2,3]
freq = arr.inject(Hash.new(0)) { |h,v| h[v] += 1; h }
#=> {1:3, 2:1, 3:1}
如果有人可以解釋如何找到一個數組的模式,我將不勝感激。
呃,代碼是儘可能清楚的,我不知道如何更好地解釋它。哈希值只爲每個值使用一個計數器,默認值爲'0',每次再次看到一個值時增加'1'。 – 2014-10-08 05:20:15
'{1:3,2:1,3:1}'不是有效的Ruby對象。 – sawa 2014-10-08 06:07:26