2014-01-03 1 views
0

У меня есть следующие списки:Python: получение первого пункта вложенного списка, если его второй элемент равен второй пункт вложенного списка в другой список

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

Как получить первые элементы всех вложенных списков списка a и b. Второй элемент каждого вложенного списка в списке a равен второму элементу вложенных списков списка b, за исключением третьих.

как получить следующий вывод:

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

ответ

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']] 
+3

+1 Просто для понимания вопроса. – thefourtheye

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']] 
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']]