<pre><code>Dct3 = {k: set.union(*map(lambda x: set(Dct1.get(x, [])), v)) for k, v in Dct2.items()}
</code></pre>
<p>对于<code>Dct2</code>中的每个键、值对,我们将该键映射到由<code>Dct1</code>中的键的成员元素映射到的集合的并集。在</p>
<p>编辑:解释</p>
^{pr2}$
<p>是一个<a href="https://www.python.org/dev/peps/pep-0274/" rel="nofollow noreferrer">dictionary comprehension</a>,它重新创建<code>Dct2</code>。在</p>
<pre><code>set.union(*map(lambda x: set(Dct1.get(x, [])), v))
</code></pre>
<p>是我们用来建造这套装置的,但是让我们从里到外看它。在</p>
<pre><code>Dct1.get(x, [])
</code></pre>
<p>尝试访问<code>Dct1[x]</code>并返回它。如果dict没有键<code>x</code>,则返回一个空列表<code>[]</code></p>
<pre><code>set(Dct1.get(x, []))
</code></pre>
<p>获取上面<code>Dct1.get</code>的结果并将其转换为一个集合。在</p>
<pre><code>lambda x: set(Dct1.get(x, []))
</code></pre>
<p>定义一个匿名函数(即它没有名字)。{{cd5>函数只需要使用</p>
<pre><code>map(lambda x: set(Dct1.get(x, [])), v)
</code></pre>
<p><code>map</code>是一个函数,它接受另一个函数(在本例中是lambda函数)和一个iterable(类似于列表),然后生成一个iterable,将该函数应用于输入iterable的每个元素。在</p>
<pre><code>*map(lambda x: set(Dct1.get(x, [])), v)
</code></pre>
<p>此上下文中的<code>*</code>运算符用于解压缩ITerable。所以它接受一个像<code>[1, 2, 3]</code>这样的iterable并将<code>add(*[1, 2, 3])</code>转换成{<cd14>}</p>
<pre><code> set.union(*map(lambda x: set(Dct1.get(x, [])), v))
</code></pre>
<p><code>set.union</code>是一个函数,它接受多个集合并计算它们的并集,基本上将它们全部相加。在</p>