2015-02-10 61 views
0

我有一个字典叫做遍历。对于给定的密钥,我有一系列值。我想以递归的方式调用函数遍历的次数与我在这个数组中每次删除其中一个的次数一样多。函数的递归调用 - 发送字典的深度副本没有元素

到目前为止,我有这样的:

for i in xrange(0,length-1,1): 
    print ("try branch with value: " + next + " and index " + str(i)) 

    next=(traversal[key])[i] 
    result=result+key[i] 

    #here you need to remove next from traversal 
    traverse(100,result,copy.deepcopy(traversal),next) 

不过,我需要修改它,这样,而不是字典穿越,我会送字典的深拷贝的深拷贝没有的一个值。这样的事情:

traverse(100,result,copy.deepcopy(del (traversal[key])[i]),next) 

任何意见如何写这个?

+0

我修正了压痕。 – Perlnika 2015-02-10 19:10:53

+0

你怎么知道如何停止?递归函数需要一个条件语句来告诉它它已经完成。 – 2015-02-10 19:13:52

+0

在递归的每一步,我想从名为traversal的字典中删除一个元素。遍历为空时,我在代码中“返回”。 – Perlnika 2015-02-10 19:15:55

回答

0

它看起来像词典值是序列,你是按顺序遍历这些序列。复制完成后,您可以使用切片从副本的值中移除元素。

>>> d 
{1: [1, 2, 3]} 
>>> e = copy.deepcopy(d) 
>>> e 
{1: [1, 2, 3]} 
>>> i = 0 
>>> key = 1 
>>> v = e[key] 
>>> v = v[:i] + v[i+1:] 
>>> e[key] = v 
>>> e 
{1: [2, 3]} 
>>> d 
{1: [1, 2, 3]} 
>>> 

没有看到更多的代码或数据,很难判断这是你真正想要还是需要的。