<p>一种简单易读的方法是使用<a href="https://docs.python.org/3/library/collections.html#collections.defaultdict" rel="nofollow noreferrer">collections.defaultdict</a>和嵌套for循环:</p>
<pre><code>from collections import defaultdict
graph = {'A': ['B', 'C'], 'B': ['C'], 'C': ['A'], 'D': ['B', 'A']}
graph_inv = defaultdict(list)
for source, targets in graph.items():
for target in targets:
graph_inv[target].append(source)
</code></pre>
<p>输出:</p>
<pre><code>>>> graph_inv
defaultdict(list, {'B': ['A', 'D'], 'C': ['A', 'B'], 'A': ['C', 'D']})
</code></pre>
<p>您可以看到结果字典中没有“D”键,但由于我们将其声明为<a href="https://docs.python.org/3/library/collections.html#collections.defaultdict" rel="nofollow noreferrer">^{<cd1>}</a>,因此如果您尝试获取它,您将获得预期的结果:</p>
<pre><code>>>> graph_inv["D"]
[]
</code></pre>
<p>然而,这可能不是最有效的方法</p>