在python元组列表中搜索

在python元组列表中搜索,python,list,python-2.7,tuples,Python,List,Python 2.7,Tuples,现在我想创建对“dog”的搜索,这样我的返回值将是db[1]。我仍然无法理解(我知道我会在db中使用类似的东西:如果在item[:]中使用'dog',,但我真的不知道如何将它组合起来 请提供帮助?如果您正在查找第一个匹配的项目(正如您所说的返回值应该是db[1]),那么您可以使用 db = [('cat',15,22),('dog',28,30),('human',27,80)] items = [i for i in db if 'dog' in i] items[0] if items e

现在我想创建对“dog”的搜索,这样我的返回值将是
db[1]
。我仍然无法理解(我知道我会在db中使用类似
的东西:如果在item[:]中使用'dog',
,但我真的不知道如何将它组合起来


请提供帮助?

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

db = [('cat',15,22),('dog',28,30),('human',27,80)]
items = [i for i in db if 'dog' in i]
items[0] if items else None
# ('dog', 28, 30)
如果
“dog”
可能在元组的任何元素中,那么
(28,'dog',30)
也会匹配,我会选择

next((x for x in db if x[0] == 'dog'), None)
请参阅的答案以了解其工作原理。

您可以使用过滤器:

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

filter(lambda x:'dog' in x, db)
f = lambda db,x: [_t for _t in db if _t[0]==x][0]
你是说这个

[('dog', 28, 30)]
输出:

filter(lambda x:'dog' in x, db)
f = lambda db,x: [_t for _t in db if _t[0]==x][0]

您不需要将元组转换为列表来使用
中的
[i for i in db如果'dog'in i]
也可以。是的,我已经修复了它。谢谢。另外,@user3056783希望其返回值为
db[1]
,因此这应该是
[i for i in db如果'do'in i][0]
;如果找不到'dog'(因为您构建的列表将是空的),这当然会被
索引器炸掉。我添加代码是为了安全地检查空结果。是的,我喜欢这一个,并且有点理解它。如果我仔细研究,这种编码叫什么:
[如果在数据库中输入'dog',则在数据库中输入'i]
?这样我才知道要搜索什么。