商店对象数组
属于城市对象
- 属于县对象
我想通过县,然后城市,那么频率上市的哈希落得...
我想出了这一点,但感觉真的未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