商店對象數組
屬於城市對象
- 屬於縣對象
我想通過縣,然後城市,那麼頻率上市的哈希落得...
我想出了這一點,但感覺真的未rubylike ..
city_by_prefecture = shop_list.reduce({}){ |h,e|
if h[e.prefecture.name].nil?
h[e.prefecture.name] = {e.city.name => 1}
elsif h[e.prefecture.name][e.city.name].nil?
h[e.prefecture.name][e.city.name] = 1
else
h[e.prefecture.name][e.city.name] += 1
end
h
}
必須有DRY-er的方式來做到這一點!
可能重複的[如何分配散列\ [ 「一」 \] \ [ 「b」 的\] = 「C」,如果散列\ [ 「一」 \]不存在?] (http://stackoverflow.com/questions/5878529/how-to-assign-hashab-c-if-hasha-doesnt-exist) –
你可能想使用'h.has_key?(e.prefecture.name)'而不是'h [e.prefecture.name] .nil?',因爲這樣你的問題就更加明顯了。另外,使用'each_with_object'而不是'reduce',所以你不必在塊的末尾加上'h'。 –
謝謝安德魯。我不知道'each_with_object'。 – minikomi