一般问题集,python

时间:2010-07-16 09:14:54

标签: python set

我遇到了问题:

这里的

键是一个列表。

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

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

现在,我只需要从中选择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.我应该如何实现它?以上方法是对还是错?我试过了,但没有给我正确的答案

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您可以尝试将6和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)

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

答案 2 :(得分:0)

如果我理解你的意思:

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

顺便说一下,这有点多余:

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

你可以这样做:

closed.add(v)

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