Python:如果第二项等于嵌套列表的另一个列表的第二项,则获取嵌套列表的第一项

时间:2014-01-03 06:04:46

标签: python nested-lists

我有以下列表:

a = [['a', 'x'], ['b', 'y'], ['c', 'z']]
b = [['d', 'x'], ['e', 'y'], ['f', 'm']]

如何获取列表a和b的所有嵌套列表的第一项。列表a中每个嵌套列表的第二项等于列表b的嵌套列表的第二项,但第三项除外。

如何获得以下输出:

['a', 'd']
['b', 'e']

3 个答案:

答案 0 :(得分:5)

使用zip

>>> a = [['a', 'x'], ['b', 'y'], ['c', 'z']]
>>> b = [['d', 'x'], ['e', 'y'], ['f', 'm']]
>>> [[x[0], y[0]] for x, y in zip(a, b) if x[1]==y[1]]
[['a', 'd'], ['b', 'e']]

答案 1 :(得分:2)

另一种方式可能是:

r = [[a[i][0], b[i][0]] for i in range(len(a)) if a[i][1] == b[i][1]]
print r

<强>输出:

[['a', 'd'], ['b', 'e']]

答案 2 :(得分:0)

使用zip和元组解包:

>>> a = [['a', 'x'], ['b', 'y'], ['c', 'z']]
>>> b = [['d', 'x'], ['e', 'y'], ['f', 'm']]
>>> [[a1, b1] for (a1, a2), (b1, b2) in zip(a, b) if a2 == b2]
[['a', 'd'], ['b', 'e']]