Python内置类型set
有一个名为pop()的方法,来自docs:
从集合中删除并返回任意元素。引发KeyError 如果集合为空。
我想不出这个功能的任何用例,似乎是尝试实现list
接口。
为什么这是Python标准的一部分?
答案 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
值的字典来模拟集合。