a blank hash declaration can be done w/ {} or Hash.new

the block form is only used when you call into the hash.
{} is conventionally used, Hash.new is used when you want need to set the default value when someone tries to reference a key that doesn't exist, which is nil normally.  Such as Hash.new("unknown key").  On a side note, if you prefer this action to raise an error, which is apparently the default behavior in python, you can use .fetch(key) instead of [key]