为什么我不能比较python2.7中的set和immutableset

2024-09-30 01:21:23 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么不能使用子集运算符<;=,比较集合和不可变表集?E、 运行以下代码。有什么问题吗?感谢任何帮助。我使用的是python2.7。在

>>> from sets import ImmutableSet
>>> X = ImmutableSet([1,2,3])
>>> X <= set([1,2,3,4])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sets.py", line 291, in issubset
    self._binary_sanity_check(other)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/sets.py", line 328, in _binary_sanity_check
    raise TypeError, "Binary operation only permitted between sets"
TypeError: Binary operation only permitted between sets
>>> 

Tags: inpyliblocallinelibrarysetsframework
1条回答
网友
1楼 · 发布于 2024-09-30 01:21:23

请改用^{} object^{} module已被弃用,无法与内置类型进行比较:

>>> X = frozenset([1,2,3])
>>> X <= set([1,2,3,4])
True

来自sets模块的文档:

Deprecated since version 2.6: The built-in set/frozenset types replace this module.

如果您一直使用sets模块的代码,请在比较时只使用它的类型:

^{pr2}$

Pythonsetfrozenset确实接受许多运算符和函数的任何序列,因此反转您的测试也可以工作:

>>> X
frozenset([1, 2, 3])
>>> set([1,2,3,4]) >= X
True

这同样适用于sets.ImmutableSetsets.Set类上的.issubset()函数:

>>> X.issubset(set([1,2,3,4]))
True

但是,不要将不推荐的类型和新的内置类型混合使用是最好的选择。在

相关问题 更多 >

    热门问题