Python:set.pop()的用例是什么?

时间:2013-10-15 10:19:38

标签: python

Python内置类型set有一个名为pop()的方法,来自docs:

  

从集合中删除并返回任意元素。引发KeyError   如果集合为空。

我想不出这个功能的任何用例,似乎是尝试实现list接口。

为什么这是Python标准的一部分?

1 个答案:

答案 0 :(得分:8)

当您有一个工作池没有特定顺序处理时,您可以使用它。作业只能执行一次,但一旦执行就可以再次添加:

jobs = set([job1, job2, job3])

while jobs:
    job = jobs.pop()
    job.process()

其中job.process()可能会增加更多的工作量。处理完所有作业后,该集将为空并且循环完成。

或者,对于一个不那么做作的真实世界的示例,请参阅distlib库中的DependencyFinder.find() method(例如pip使用的),它使用todo设置为跟踪仍需要处理的分发提供者。

该方法是dict.popitem() method的镜像,它明确提到了设置算法:

  

popitem()对于破坏性地迭代字典很有用,就像在集合算法中经常使用的那样。

set添加到该语言之前,您将使用带有None值的字典来模拟集合。