Python,集合,比较同一集合中的两个元素
如果我有一个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