擅长:python、mysql、java
<p>首先,举个例子:</p>
<pre><code>nodesDict = {'A': [1, 2, 3, 4], 'B': [3, 4], 'C': [1, 4, 5]}
</code></pre>
<p>由此我们可以推断出预期的结果:</p>
^{pr2}$
<p>要做到这一点,最简单的方法是颠倒事实:</p>
<pre><code>from collections import defaultdict
revDict = defaultdict(list)
for k, v in nodesDict.items():
for item in v:
revDict[item].append(k)
</code></pre>
<p>现在,你把dict颠倒过来,你可以简单地在上面迭代,组合元素,瞧:</p>
<pre><code>from itertools import combinations
edges = []
for k, v in revDict.items():
if len(v) > 1:
for values in combinations(v, 2):
edges.append((k,) + values)
print edges
# [(1, 'A', 'C'), (3, 'A', 'B'), (4, 'A', 'C'), (4, 'A', 'B'), (4, 'C', 'B')]
</code></pre>