在python中的嵌套列表中搜索

Gez*_*zim 4 python search nested list

我有一个清单:

l = [['en', 60, 'command'],['sq', 34, 'komand']]
Run Code Online (Sandbox Code Playgroud)

我想搜索komandsq并获得l[1]返回.

我能以某种方式为列表搜索定义自己的匹配函数吗?

Ale*_*lli 11

一个表达式:

next(subl for subl in l if 'sq' in subl)
Run Code Online (Sandbox Code Playgroud)

会给你准确的你正在搜索的子列表(或者StopIteration如果没有这样的子列表就会提出;如果后者的行为不是你想要的,那就传递next第二个参数[[例如,[]或者None,取决于你想要什么!]]在那种情况下返回).因此,只需使用此结果值,或将其指定为您希望的任何名称,依此类推.

当然,您可以轻松地将此表达式添加到您喜欢的任何类型的功能中,例如:

def gimmethesublist(thelist, anitem, adef=None):
    return next((subl for subl in thelist if anitem in subl), adef)
Run Code Online (Sandbox Code Playgroud)

但是如果您正在处理特定的变量或值,那么在线编码表达式通常是更可取的.

编辑:如果您要搜索多个项目以查找包含任何一个(或多个)项目的子列表,

its = set(['blah', 'bluh'])
next(subl for subl in l if its.intersection(subl))
Run Code Online (Sandbox Code Playgroud)

如果你想找到一个包含你所有物品的子列表,

next(subl for subl in l if its.issubset(subl))
Run Code Online (Sandbox Code Playgroud)

  • 如何调整这种技术来返回搜索词的索引?或者你会不得不采取循环方式? (2认同)