Equivalent of Clojure's "assoc-in" and "get-in" in Python
<p>In Clojure you can update a map (dict) with <code>assoc-in</code> and create key path automatically if it don't exist.</p>

<pre><code>(assoc-in {:a 1 :b 3} [:c :d] 33)
{:a 1, :c {:d 33}, :b 3}
</code></pre>

<p>Same for <code>get-in</code>: you can specify a path of keys (or list indices) and it will return the value specified by the path, <code>nil</code> if it does not exist.</p>

<pre><code>(get-in {:a 1, :c {:d 33}, :b 3} [:c :d])
33
(get-in {:a 1, :c {:d 33}, :b 3} [:c :e])
nil
</code></pre>

<p>Is there a Python equivalent or a comparable shortcut out of the box? (yes, I know I can write dodgy dict wrappers myself, but I'd like to avoid it).</p>
