<p>下面是一个可以在最新版本的python2和python3上使用的代码版本。你知道吗</p>
<p>我已经消除了使用带有<code>temp_result</code>集的<code>global</code><code>tmp_array</code>列表,该集合作为参数传递给递归函数。测试集合的成员资格比测试列表更有效。速度差对于小的组几乎不明显,但是对于大的组相当明显。你知道吗</p>
<pre><code>my_dict = {
1: set([3, 4]),
2: set([5, 6]),
3: set([1, 4, 7, 8]),
4: set([1, 3, 8, 9]),
5: set([2, 6, 50, 80]),
6: set([2, 5, 70, 80]),
7: set([3, 8]),
8: set([3, 4, 7, 9]),
9: set([4, 8]),
50: set([5, 80]),
70: set([6, 80]),
80: set([5, 6, 50, 70]),
}
def recursion(number, temp_result):
if number not in temp_result:
temp_result.add(number)
tmp = my_dict[number]
del my_dict[number]
for i in tmp:
recursion(i, temp_result)
def startRecursion(number):
temp_result = set()
recursion(number, temp_result)
return list(temp_result)
def getResults():
results = []
while my_dict:
first_key = list(my_dict.keys())[0]
results.append(startRecursion(first_key))
return results
print(getResults())
</code></pre>
<p><strong>输出</strong></p>
<pre><code>[[1, 3, 4, 7, 8, 9], [2, 5, 6, 80, 50, 70]]
</code></pre>