2014-01-30 105 views
0

我想知道如何將散列添加到散列 上,並在內部增加散列。在散列或符號上動態添加散列紅寶石

words_to_scan.scan(/\w+|\?|\.|!|\,/).select do |aword| 
    if words_from_file.has_key?(aword.to_sym) 
     words_from_file[aword.to_sym]['pop'] += 1 
    else 
    words_from_file[aword.to_sym]['pop'] = 1 
    end 
end 

我試圖每當關鍵是發現像

words_from_file = {:the => {'pop' => 3, 'positions' => [1,6,10]}} 

回答

0
words_from_file = {} 
words_to_scan.scan(/\w+|\?|\.|!|\,/).select do |aword| 
    words_from_file[aword.to_sym] ||= {} # declare hash if was not already declared 
    words_from_file[aword.to_sym]['pop'] ||= 0 # set pop if was not already set 
    words_from_file[aword.to_sym]['pop'] += 1 # increment 
end 
0

創造一些哈希奔跑的default_proc。這裏它爲新密鑰創建一個新的哈希值:

words_from_file.default_proc = Proc.new{|h,k,v| h[k] = {'pop' => 0, 'positions' => []} } 

words_to_scan.scan(/\w+|\?|\.|!|\,/).each do |aword| 
    words_from_file[aword.to_sym]['pop'] += 1 
end