我是Python新手(4周内),我的Python程序有问题,它应该对我的字典进行排序。我的dict中有id,其中一些是相互连接的(通过set)。在这个例子中,我应该得到一个由两个数组组成的数组[[1,3,4,7,8,9],[2,5,6,50,70,80]]来标记我的两个不同的组。 这个程序在一个较旧的python版本上运行,但是现在我在将它转换为python3.5时遇到了问题,因为集合的工作方式不同,我似乎无法让它运行。为了使它在python3.5上工作,我需要做什么更改?(我在Spyder环境中使用WinPython3.5)
from sets import Set
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):
if number not in tmp_array:
tmp_array.append(number)
if number in dict:
tmp = dict[number]
del dict[number]
for i in tmp:
recursion(i)
def startRecursion(number):
global tmp_array
tmp_array = []
recursion(number)
return tmp_array
def getResults():
results = []
tmp_array = []
while dict:
results.append(startRecursion(dict.keys()[0]))
return results
print (getResults())
在版本2.4中,Python用a built-in ^{} type 替换了
sets
模块。要切换到新类型,只需去掉from sets import Set
行,并将每个出现的Set
更改为set
。还要注意,set([3,4])
现在可以等价地写{3,4}
。你知道吗下面是一个可以在最新版本的python2和python3上使用的代码版本。你知道吗
我已经消除了使用带有
temp_result
集的global
tmp_array
列表,该集合作为参数传递给递归函数。测试集合的成员资格比测试列表更有效。速度差对于小的组几乎不明显,但是对于大的组相当明显。你知道吗输出
相关问题 更多 >
编程相关推荐