2014-01-30 107 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