“in”运算符不适用于python中的元组和集合

2024-04-19 20:04:26 发布

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

如果我有两个相同的元组:

>>> e = ('a', 1)
>>> c = ('a', 1)
>>> e == c
True
>>> hash(e)
9135824190991152417
>>> hash(c)
9135824190991152417

但令我惊讶的是:

>>> se = set(c)
>>> e in se
False

如何使用集合检查元组是否在其中


Tags: infalsetruehash元组setse
2条回答

如您所见,e不是se的元素,因此in返回false

se = {'a', 1}
e = ('a', 1)

由于^{}接受一个iterable,并使用其值填充其结构,因此不能像这样传递元组、使用{}语法或给出包含元组的列表(或元组)

# {('a', 1)}
se = {c} 
se = set((c,)) 
se = set([c])

在您的示例中se = {'a', 1}不是{('a',1)},因此得到false。要创建我认为需要的元组集,请使用set([c,]){c}

相关问题 更多 >