在python元组列表中搜索

时间:2014-03-24 08:26:51

标签: python list python-2.7 tuples

db = [('cat',15,22),('dog',28,30),('human',27,80)]

现在我想创建搜索“狗”的搜索所以我的返回值为db[1]。我仍然无法弄明白(我知道我会像for item in db: if 'dog' in item[:]那样使用但不知道如何把它放在一起。

请帮帮忙?

4 个答案:

答案 0 :(得分:3)

items = [i for i in db if 'dog' in i]
items[0] if items else None
# ('dog', 28, 30)

答案 1 :(得分:2)

如果您正在寻找匹配的第一个项目(正如您所说,您的返回值应为db[1]),那么您可以使用

next((x for x in db if x[0] == 'dog'), None)

如果'dog'可能位于元组的任何元素中 - 以便(28, 'dog', 30)也匹配 - 我会选择

next((x for x in db if 'dog' in x), None)

查看find first element in a sequence that matches a predicate的答案,了解其工作原理。

答案 2 :(得分:1)

您可以使用过滤器:

filter(lambda x:'dog' in x, db)

输出:

[('dog', 28, 30)]

答案 3 :(得分:1)

你是说这个?

f = lambda db,x: [_t for _t in db if _t[0]==x][0]

输出:

>>> f(db,'dog')
('dog', 28, 30)