在嵌套元组中查找值

5 python

说我有:

t = (
    ('dog', 'Dog'),
    ('cat', 'Cat'),
    ('fish', 'Fish'),
)
Run Code Online (Sandbox Code Playgroud)

我需要检查一个值是否在嵌套元组的第一位(即小写位).我怎样才能做到这一点?大写值无关紧要,我想只搜索小写值中的字符串.

if 'fish' in t:
    print "Fish in t."
Run Code Online (Sandbox Code Playgroud)

不行.

如果没有使用if语句进行for循环,有没有一种好方法呢?

Ste*_*202 10

可以通过指定索引来提取元组的元素:('a', 'b')[0] == 'a'.您可以使用列表推导来迭代某些可迭代的所有元素.元组也是可迭代的.最后,any()告诉给定iterable中的任何元素是否计算结果True.将所有这些放在一起:

>>> t = (
...     ('dog', 'Dog'),
...     ('cat', 'Cat'),
...     ('fish', 'Fish'),
... )
>>> def contains(w, t):
...     return any(w == e[0] for e in t)
... 
>>> contains('fish', t)
True
>>> contains('dish', t)
False
Run Code Online (Sandbox Code Playgroud)


ars*_*ars 5

尝试:

any('fish' == tup[0] for tup in t)
Run Code Online (Sandbox Code Playgroud)

编辑:斯蒂芬是对的;固定“鱼”== tup[0]。另请参阅他更完整的答案。

  • 那应该是`==` 而不是`in`,否则例如`"ish"` 也匹配。 (2认同)