<div>
</div>
<p>我有一张我想转置的图</p>
<pre><code>graph = { 'A' : ['B','C'],
'B' : ['C',],
'C' : ['A',],
'D' : ['B','A']
}
</code></pre>
<p>有没有办法做到:</p>
<pre><code>reverseGraph = { 'A' : ['C','D'],
'B': ['A','D'],
'C': ['A','B'],
'D': []
}
</code></pre>
<p>我的尝试是这样的:</p>
<pre><code>def transpose(graph):
transposed = {}
for key in graph.keys():
transposed.update({key:[]})
for key in transposed:
for value in graph.values():
for letter in value:
if letter is key:
#put the letter's key (from graph) in the list of the
#the current key in transposed
</code></pre>
<p>我创建了一个新的图,其中只有原始图的键。我循环遍历每个键以添加转置的值。我循环遍历每个值列表以找到匹配的值。从这里,如果我找到一个匹配项,我将把匹配项放在当前键的值列表中。我的问题是如何找到匹配的密钥。可能吗</p>
<p>我提出这个问题的原因是,我认为应该有一种更好的方法在Python中实现这一点。我在网上找到了一些代码,如果每个节点只有一条边,那么这些代码就会转置到另一个节点。但这不适用于我的应用程序。像这样:</p>
<pre><code>inv_map = {v: k for k, v in my_map.items()}
</code></pre>
<p>如果值是唯一的,也可以使用解决方案:</p>
<pre><code>dict((v, k) for k, v in my_map.iteritems())
</code></pre>