Как извлечь список из списка, если какой-либо элемент соответствует внутреннему списку - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу получить внутренний список из 'list1' , когда второй элемент colomn в 'list1' совпадает с элементом, входящим в цикл 'list2'

У меня есть такой список:

list1=
    [
        [1546,'token1',12,442],
        [23,'token2',4,542],
        [6,'token3',34,462],
        [336,'token4',45,642],
        [146,'token5',43,62],
    ]

и другой список:

list2=['token1','token2','token3','token4','token5']



 for element in list2:

Здесь я хочу, если element == list1 второй элемент colomn (то есть 'token1' == второй элемент colomn списка1 'token1')
затем я получаю список [ID, element, value1, value2] (т.е. [1546, 'token1', 12,442] ) из list1 .

Ответы [ 4 ]

0 голосов
/ 13 февраля 2019

Это два способа сделать это, что даст желаемый результат.Позвольте мне показать долгий путь:

for i in list1:
    if i[1] in list2:
        print (i)

Тогда здесь мы можем использовать Генератор для достижения вышеуказанного в одной строке.

[element for element in list1 if element[1] in list2]

Надеюсь, это поможет.

0 голосов
/ 13 февраля 2019

Понимание списка - это действительно простой и мощный способ сделать это:

lista = [[i for i in list1 if token in i] for token in list2]

print([each[0] for each in lista if len(each)])

Вывод:

[[1546, 'token1', 12, 442], [23, 'token2', 4, 542], [6, 'token3', 34,462], [336, 'token4', 45, 642], [146, 'token5', 43, 62]]
0 голосов
/ 13 февраля 2019

Вы можете создать dict для поиска, используя dictcomp, и извлекать данные в список, используя listcomp:

d = {i[1]: i for i in list1}
l = [d[i] for i in list2]
0 голосов
/ 13 февраля 2019

вы можете попробовать:

dict_from_list_1 = {e[1]: e for e in list1}
for element in list2:
    if element in dict_from_list_1:
        print(dict_from_list_1[element])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...