If I have a dict such as:
foo = {('foo', 45):5, ('bar', 34):3}
How can I check against part of that tuple?
if 'foo' in foo: #should be true
pass
if 45 in foo: #also should be true
Or some other syntax.
>>> foo = {('foo', 45): 5, ('bar', 34): 3}
>>> any(t1 == "foo" for (t1, t2) in foo)
True
>>> any(t2 == 45 for (t1, t2) in foo)
True
If you don't know where the value is to be found you can just check the whole pair:
>>> any(45 in pair for pair in foo)
True
You can also a generators approach (flatten):
>>> 45 in flatten(foo)
True
That said, probably the best idea is to build your data so you can check this kind of inclussion in O(1) time (a set? a refactored dictionary?)
You can use operator.concat
to flatten all keys:
>>> import operator
>>> 'foo' in reduce(operator.concat, foo.keys())
True
...or any:
any('foo' in t for t in foo.keys())
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With