【问题标题】:Python set not empty but pop returns empty? [closed]Python设置不为空但pop返回空? [关闭]
【发布时间】:2011-05-19 07:16:20
【问题描述】:

我在多线程中看到了类似的问题,但这甚至不是多线程,它只是直接填充一组然后弹出。

我打印出集合,然后立即尝试打印出集合的流行音乐。但是当我看到这样的集合打印出来时,它说集合是空的:

set(['', 'asdf', 'asdf, 'asdf'])

【问题讨论】:

  • 请提供上下文 - 否则您的问题毫无意义
  • 在您的示例中,您在第二个 'asdf' 之后忘记了一个 '。
  • 当你弹出一个元素时,你删除了这个元素并将它返回给调用者。如果你弹出所有元素,你的集合就会变成空的......
  • 向我们展示代码和确切的集合。
  • 另外你应该知道集合不允许像列表那样的重复元素。所以结果集只有两个元素,空字符串和'asdf'。

标签: python set


【解决方案1】:
pop(...)
    Remove and return an arbitrary set element.
    Raises KeyError if the set is empty.

由于您的集合中有一个空字符串,foo.pop() 很有可能返回此空字符串,而打印一个空字符串不会给您任何结果。

【讨论】:

  • 如果“它说集合是空的”不是上面提到的KeyError,这个问题比我想象的还要糟糕。返回一个空字符串,它与 "KeyError: 'pop from an empty set'" 有很大不同,您会看到在空集上调用 pop()
猜你喜欢
  • 1970-01-01
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多