Python - 匹配

时间:2013-12-11 13:34:35

标签: python tuples match

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

z = [('four', 'five', 'six'), ('one', 'two', 'twenty')]

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

所以我想得到

myFunc(a,z) -> 'twenty'
myFunc(b,z) -> None

2 个答案:

答案 0 :(得分: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)
>>>

答案 1 :(得分:3)

最简单的解决方案似乎是:

def myFunc(t, tList):
    return [r[-1] for r in tList if r[:2] == t] or None