Python,sets,比较同一组中的两个元素

时间:2014-03-05 20:57:14

标签: python set compare

如果我有一个python集,并且我想知道集合中的一个元素是否是同一集合中另一个元素的一部分,我该怎么做?

我尝试过使用指标,但我遇到了以下情况:

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

我没有发现python文档在这种情况下特别有用,因为我不知道如何比较集合中的元素。

顺便说一句,这是我有史以来的第一个Stackoverflow问题。我试图坚持最佳实践。如果有办法我可以改进这个问题,请告诉我。谢谢你的帮助!

3 个答案:

答案 0 :(得分:2)

设置没有订单。元素的索引实际上是元素本身。如果你确实需要集合(尽管我怀疑其他数据结构可能是合适的)那么它们是可迭代的,你可以将每个元素与其他元素进行比较,但这并不是非常好的性能,例如:

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

答案 1 :(得分:0)

  

'set'对象不支持索引。

这清楚地表明你不能将set的元素索引为mySet [1]。

访问集合中的单个元素,您必须像mySet.pop()

一样使用它

答案 2 :(得分:0)

看起来你实际上并没有尝试比较集合,而是集合的成员。问题是您无法获取索引成员,因为set无序(以及未编入索引的)元素集合。

您正在尝试比较这两个元素(字符串)。您想要的是listtuple

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

检查字符串'lo'是否为'hello'的子字符串。这个似乎是您在问题中想要完成的事情。