2010-07-16 85 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}