寻找嵌套元组中的值

6 投票
4 回答
7487 浏览
提问于 2025-04-15 12:58

假设我有:

t = (
    ('dog', 'Dog'),
    ('cat', 'Cat'),
    ('fish', 'Fish'),
)

我需要检查一个值是否在嵌套元组的第一个部分(也就是小写字母的部分)。我该怎么做呢?大写的值其实不重要,我只想在小写的值中查找一个字符串。

if 'fish' in t:
    print "Fish in t."

这样做不行。

有没有什么好的方法可以做到这一点,而不需要用到带有if语句的for循环呢?

4 个回答

3

当你有一组键值对,比如:

t = (
    ('dog', 'Dog'),
    ('cat', 'Cat'),
    ('fish', 'Fish'),
)

你可以用 dict() 这个构造函数把它“转换”成一个字典,然后就可以使用 in 这个关键词了。

if 'fish' in dict(t):
    print 'fish is in t'

这和 上面的回答 非常相似。

5

试试这个:

any('fish' == tup[0] for tup in t)

补充:Stephan说得对;修正了 'fish' == tup[0] 的部分。还可以看看他更详细的回答。

10

元组中的元素可以通过指定索引来提取,比如 ('a', 'b')[0] == 'a' 这个例子中,索引0对应的就是'a'。你还可以使用一种叫做 列表推导式 的方法,来遍历某个可迭代对象中的所有元素。元组也是一种可迭代对象。最后,any() 这个函数可以告诉你在一个可迭代对象中是否有任何元素的值为 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

撰写回答