Yeah, it's the only way to make the key exists, which is needed for values that are produced on the fly.  Though I suppose there could be a case for not creating the key, perhaps if some prerequisites are not met or something.  In fact, I bet this could be exploited if you needed to have some virtual values depend on other virtual values.  But these kinds of things hurt my brain :D