Check For Any Values In Set
Suppose I have the following set: things = {'foo', 'bar', 'baz'} I would like to find out if either foo or bar exists in the set. I've tried: >>> 'foo' in things or 'bar'
Solution 1:
As long as you're using sets, you could use:
if {'foo','bar'} & things:
...
& indicates set indication, and the intersection will be truthy whenever it is nonempty.
Solution 2:
Talking sets, what you actually want to know is if the intersection is nonempty:
if things & {'foo', 'bar'}:
# At least one of them is inAnd there is always any():
any(t in things for t in ['foo', 'bar'])
Which is nice in case you have a long list of things to check. But for just two things, I prefer the simple or.
Solution 3:
You are looking for the intersection of the sets:
things = {'foo', 'bar', 'baz'}
things.intersection({'foo', 'other'})
# {'foo'}
things.intersection('none', 'here')
#setSo, as empty sets are falsy in boolean context, you can do:
if things.intersection({'foo', 'other'}):
print("some common value")
else:
print('no one here')
Solution 4:
You can use set.isdisjoint:
if not things.isdisjoint({'foo', 'bar'}):
...
Or set.intersection:
if things.intersection({'foo', 'bar'}):
...
Or any:
if any(thing in things for thing in ['foo', 'bar']):
...
Or stick with or, because very often that's actually the most readable solution:
if'foo'in things or 'bar'in things:
...
Solution 5:
things = {'foo', 'bar', 'baz'}
any([i in things for i in ['foo', 'bar']])
Post a Comment for "Check For Any Values In Set"