首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Python集没有查找方法?

为什么Python集没有查找方法?
EN

Stack Overflow用户
提问于 2016-08-26 20:12:18
回答 1查看 288关注 0票数 0

在Python中,对象可以是相等的,尽管对象不是同一个对象(==is)。考虑对任意对象obj1obj2的以下顺序。

代码语言:javascript
复制
assert obj1 == obj2
assert obj1 is not obj2
s = set((obj1,))
del obj1

是否有一种从sobj2获得sobj2的通用而有效的方法(对于任意大的集合,s恰好包含与正在查找的对象相等的对象)?(依赖于set.intersecting单例set的结构似乎不可靠。)

如果没有,为什么?

最明显的替代方法是使用dict,其中每个键都存储为自己的值。与预期的set-based方法相比,该方法浪费了多少内存尚不清楚。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-26 20:14:21

不,集合不是映射,如果是obj1 == obj2,那就无关紧要了。集合的存在是为了测试成员资格和保存唯一值(由等式定义),而不是映射回特定对象。用字典代替。

否则,您必须迭代并选择一个相等的对象:

代码语言:javascript
复制
obj1 = next(ob for ob in s if ob == obj2)

Python中的集合来自于dict类型,因为在添加集合之前(以模块的形式添加2.3,然后作为内建式),您使用了将所有键映射到None的字典来跟踪唯一值。添加“查找”功能将取消这种专门化;没有必要向字典已经提供的集合中添加功能,特别是因为字典已经发展了许多其他的集合功能,例如set代数操作。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39174020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档