Python,集合,比较同一集合中的两个元素

1 投票
3 回答
3903 浏览
提问于 2025-04-17 21:00

如果我有一个Python集合(set),我想知道这个集合中的一个元素是否是另一个元素的一部分,我该怎么做呢?

我试过使用索引,但遇到了以下问题:

mySet = {"hello", "lo"}
mySet[1] in mySet[0] #I expect to return true
TypeError: 'set' object does not support indexing

我发现Python的文档在这种情况下并没有特别有帮助,因为我不知道怎么比较集合中的元素。

顺便说一下,这是我第一次在Stackoverflow上提问。我尽量遵循最佳实践。如果有任何我可以改进的问题的建议,请告诉我。谢谢你的帮助!

3 个回答

0

看起来你并不是在比较集合,而是在比较集合里的成员。问题在于,你不能通过索引来获取成员,因为 set 是一种 无序(也就是说没有索引)的元素集合。

你其实是在比较这两个元素(字符串)。所以你需要的是一个 list 或者 tuple

>>> myTuple = ('hello', 'lo')
>>> myTuple[1] in myTuple[0]
True

这段代码检查字符串 'lo' 是否是 'hello' 的子串。这 似乎 是你在问题中想要实现的目标。

0

‘set’对象不支持索引。

这句话很明确,意思是你不能像这样访问集合中的元素:mySet[1]。

如果你想获取集合中的某个元素,你需要用类似mySet.pop()的方式。

2

集合是没有顺序的。集合中一个元素的位置实际上就是这个元素本身。如果你确实需要使用集合(不过我觉得可能有其他更合适的数据结构),那么集合是可以被遍历的,你可以把每个元素和其他元素进行比较,但这样做的效率可能不是很好,比如:

mySet = {"hello", "lo"}
for item in mySet:
    for other_item in mySet.difference([item]):
        if item in other_item:
            print item, other_item

撰写回答