寻找嵌套元组中的值
假设我有:
t = (
('dog', 'Dog'),
('cat', 'Cat'),
('fish', 'Fish'),
)
我需要检查一个值是否在嵌套元组的第一个部分(也就是小写字母的部分)。我该怎么做呢?大写的值其实不重要,我只想在小写的值中查找一个字符串。
if 'fish' in t:
print "Fish in t."
这样做不行。
有没有什么好的方法可以做到这一点,而不需要用到带有if语句的for循环呢?
4 个回答
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