<p>在你“缩短”你的代码之前,确保它是正确的。当前<a href="https://docs.python.org/library/stdtypes.html#dict.update" rel="nofollow noreferrer">^{<cd1>}</a>将只覆盖条目!在</p>
<p>我建议使用<a href="https://docs.python.org/library/collections.html" rel="nofollow noreferrer">^{<cd2>}</a>而不是<code>dict</code>,因为它已经实现了您想要的逻辑:</p>
<pre><code>>>> from collections import Counter
>>> inv = Counter({'arrow': 12, 'gold coin': 42, 'rope': 2, 'torch': 4, 'dagger': 1})
>>> dragon = Counter({'gold coin': 50, 'ruby': 15})
>>> inv.update(dragon)
>>> inv
Counter({'arrow': 12,
'dagger': 1,
'gold coin': 92, # the 42 and 50 are added!
'rope': 2,
'ruby': 15,
'torch': 4})
</code></pre>
<p>您使用的唯一函数是<code>show_inv</code>。然而,这个函数的唯一目的是<code>print</code>一个对象的表示,没有多少可以“缩短”的。似乎是对的。在</p>
<p>但是如果您有一个“object”(对象)和一个用于该对象的函数,那么您应该考虑使用“class”来包装它。有一些方法允许您自定义“字符串”表示形式:<a href="https://docs.python.org/reference/datamodel.html#object.__str__" rel="nofollow noreferrer">^{<cd7>}</a>和<a href="https://docs.python.org/reference/datamodel.html#object.__repr__" rel="nofollow noreferrer">^{<cd8>}</a>,因此可以使用这些方法来代替显式函数(或方法)调用:</p>
^{pr2}$