db = [('cat',15,22),('dog',28,30),('human',27,80)]
现在我想创建搜索“狗”的搜索所以我的返回值为db[1]
。我仍然无法弄明白(我知道我会像for item in db: if 'dog' in item[:]
那样使用但不知道如何把它放在一起。
请帮帮忙?
答案 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)