2010-07-16 61 views
-2

我得到了一个问题:一般问题集,python

这里的键是一个列表。

keys = [(6,4) , (6,8)] 

中的键条目可以4,5 ......或watever

现在,我不得不从it.So我用拾只有1:

root = keys[0] 
print root 

输出:(6,4)

现在我必须做出一组是空的,也就是说,...

closed = set() 

for u,v of root: 
    if v not in closed: 
     closed.add(v) 
     for val in closed: 
     print val 

它应该为该集合添加值,即6和4.我应该如何实现它?上述方法是对还是错?我试过,但没有给我你可以试试这个添加的6右侧答

+0

...那么你在找什么? – 2010-07-16 09:19:48

+0

你必须更具体... – st0le 2010-07-16 09:21:45

+0

它给了我一个错误.... TypeError – Shilpa 2010-07-16 09:22:54

回答

0

和4到您的设置:

closed = set() 
closed.add(root[0]) 
closed.add(root[1]) 

但是,也许你应该解释一点,你正在尝试做。然后我们可以帮助你更好。


for u,v of root:不会编译。 (6,4)是一个元组,其中 是immutable sequence type。您可以用[] 运营商处获得其值(如上面我的代码),或者你可以解开它是这样的:

(u,v) = root 

如果你想添加这两个值,你应该在你的 这个代码调用:

closed.add(u) 

的代码:

if v not in closed: 
    closed.add(v) 

相当于:

closed.add(v) 

一组确保每个元素只包含一次。

+0

基本上,root =(6,4)中有2个值。我需要检查这两个值是否在我的集合内。但它给我一个类型错误:解压nonsequence – Shilpa 2010-07-16 09:26:18

+0

2值= 6和4 – Shilpa 2010-07-16 09:26:37

0

如果我理解正确,你想做的事:

keys = [(6,4) , (6,8)] 
closed = set() 
map(closed.update, keys) 

顺便说一句,这是一个有点多余:

if v not in closed: 
    closed.add(v) 

你可以这样做:

closed.add(v) 

如果v已经关闭,则没有任何反应。

2
>>> keys = [(6,4) , (6,8)] 
>>> root = keys[0] 
>>> closed = set() 
>>> closed.update(root) 
>>> closed 
{4, 6}