Gez*_*zim 4 python search nested list
我有一个清单:
l = [['en', 60, 'command'],['sq', 34, 'komand']]
Run Code Online (Sandbox Code Playgroud)
我想搜索komand或sq并获得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)
| 归档时间: |
|
| 查看次数: |
9798 次 |
| 最近记录: |