Проблема в том, что ваша dict.values
состоит из повторяемых кортежей .Тестирование на tuple
в такой итерации работает напрямую, но не скаляр.
В Python 3.x вы можете использовать next
+ zip
для извлечения tuple
из первых значений каждого значения словаря:
d = {'a': (1, 2), 'b': (3, 4), 'c': (5, 6)}
3 in next(zip(*d.values())) # True
Если вы собираетесь выполнять такие операции повторно, вы можете сохранить эти значения в set
для доступа O (1), начиная с этого момента:
values_set = set(next(zip(*d.values())))
3 in values_set # True
Другой вариант, жизнеспособный в Python 2.7, заключается в использовании any
с пониманием генератора:
any(3 == first for first, second in d.values()) # True
any(3 == i[0] for i in d.values()) # True
any(3 == next(iter(i)) for i in d.values()) # True