9

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

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

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

为什么这部分是 Python 标准?

4

1 回答 1

19

当您有大量作业要按特定顺序处理时,您会使用它。作业应该只执行一次,但是一旦执行可以再次添加:

jobs = {job1, job2, job3}

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

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

或者,对于一个不太人为的真实世界示例,请参阅库中的DependencyFinder.find()方法(例如,由使用),它使用一组来跟踪仍需要处理的分发提供商。distlibpiptodo

该方法是该方法的镜像dict.popitem()它明确提到了集合算法:

popitem()对字典的破坏性迭代很有用,这在集合算法中经常使用。

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

于 2013-10-15T10:26:45.530 回答