Python - 匹配

app*_*ver 4 python tuples match

a = ('one', 'two')
b = ('ten', 'ten')

z = [('four', 'five', 'six'), ('one', 'two', 'twenty')]
Run Code Online (Sandbox Code Playgroud)

我正在尝试1)看看我的元组中的前两个元素(例如a或b)是否与我的元组列表中的前两个元素(z)匹配.2)如果匹配,我想返回元组的第三个元素

所以我想要

myFunc(a,z) -> 'twenty'
myFunc(b,z) -> None
Run Code Online (Sandbox Code Playgroud)

fal*_*tru 5

使用生成器表达式,和next:

>>> a = ('one', 'two')
>>> b = ('ten', 'ten')
>>> z = [('four', 'five', 'six'), ('one', 'two', 'twenty')]
>>> next((x[2] for x in z if x[:2] == a), None)
'twenty'
>>> next((x[2] for x in z if x[:2] == b), None)
>>>
Run Code Online (Sandbox Code Playgroud)

  • @appleLover:这里的生成器表达式只生成匹配元组的字符串,一次一个.`next()`不直接应用于`z`,它可以应用于`z`的过滤'视图',可以这么说. (2认同)