我正在嘗試使用頻率散列來查找數組中值的頻率。但是,我的頻率散列不能正確分組數組項 - 它們都只被計數一次。這裏是我的代碼:爲什麼我的Ruby頻率散列值沒有添加值?
require 'time'
require 'date'
def peak_hours(reg_date)
arr = []
freq = Hash.new(0)
format = "%m/%d/%y %H:%M"
arr << DateTime.strptime(reg_date, format).hour
arr.each { |v| freq[v] += 1 }
puts freq
end
contents.each do |row|
reg_date = peak_hours(row[:regdate])
end
下面是輸出:
{10=>1}
{13=>1}
{13=>1}
{19=>1}
{11=>1}
{15=>1}
{16=>1}
{17=>1}
{1=>1}
{16=>1}
{18=>1}
{21=>1}
{11=>1}
{13=>1}
{20=>1}
{19=>1}
{21=>1}
{16=>1}
{20=>1}
誰能告訴我,爲什麼按鍵均計爲一次,而不是返回的頻率?
謝謝,我更新了代碼,以顯示我通過一個csv文件('內容')循環獲取reg_date。你能告訴我如何「在循環內更新每個reg_date的頻率哈希」嗎?看起來無論我把它放在哪裏,它都是無法訪問的,因爲它是一個局部變量,或者它被重新創建並消除了這個值。 – Car
這有幫助。我會在下面發佈我的解決方案。這不是很優雅,所以如果你有建議,他們將不勝感激。 – Car