<p>python2.3-2.7有一个<a href="https://docs.python.org/2/library/sets.html" rel="nofollow noreferrer">^{<cd1>}</a>模块(在2.6+中不推荐使用这个模块,因为新的内置程序<code>set</code>和<code>frozenset</code>做了同样的事情,但是做得更好)。你知道吗</p>
<p>在2.2中没有,但是该模块是用纯Python实现的。所以假设你尊重<a href="https://docs.python.org/3/license.html" rel="nofollow noreferrer">Python license</a>-你可以把<a href="https://github.com/python/cpython/blob/2.3/Lib/sets.py" rel="nofollow noreferrer">copy it from the 2.3 source</a>加入你的项目。事实上,我在一个古老的项目中有一些代码是这样开始的:</p>
<pre><code>try:
set
except NameError:
try:
from sets import Set as set
except ImportError:
from sets23 import Set as set
</code></pre>
<p>…这意味着只要将2.3的<code>sets.py</code>作为<code>sets23.py</code>复制到项目中就可以了。但是我没有一个2.2测试,所以…我不会保证它在没有任何移植的情况下工作,但是我认为它可以。你知道吗</p>
<hr/>
<p>或者,<code>sets</code>文档中提到的那些2.3以前的历史set类仍然可以在<a href="http://code.activestate.com/recipes/langs/python/tags/set/" rel="nofollow noreferrer">ActiveState recipes collection</a>中使用。并不是所有的东西都是<a href="https://github.com/ActiveState/code/tree/master/recipes/Python" rel="nofollow noreferrer">migrated to the GitHub repo</a>(或者,如果有的话,新的搜索是不完整的),但是我可以看到<a href="https://github.com/ActiveState/code/tree/master/recipes/Python/106469_Yet_another_Set_class_for_Python" rel="nofollow noreferrer">^{<cd7>}</a>,它是Greg Wilson原始实现的一个小分支,<code>sets</code>也是一个分支。你知道吗</p>