2016-07-28 2 views
0

Я стараюсь сделать это как можно яснее. Пожалуйста, дайте мне знать, если я что-нибудь разъясню.Сопоставление списка в список ссылок

У меня есть длинный список переменных в списке в следующем формате -

L = ["Fruit", "Transportation", "Housing", "Food", "Education"] 

Я хотел бы, чтобы отобразить короткий список в него. У более короткого списка нет каждого, но только некоторые из переменных в длинном списке. Например -

S = ["Fruit", "Food"] 

То, что я заинтересован в получении являются двоичными значениями короткого списка в то время как он отображает в список L.

С S в качестве примера, он должен быть:

S = [1, 0, 0, 1, 0] 

Я попробовал карту (S, L), но очевидно, список не отозваны.

TypeError: 'list' object is not callable 

Что было бы хорошим способом сделать это? Спасибо!!

ответ

1

С помощью списка понимание, что принимает все значения в L и, если оно содержится внутри S она возвращает значение 1, и, если нет, то она возвращает значение 0:

m = [1 if subval in S else 0 for subval in L] 

Результат является:

[1, 0, 0, 1, 0] 
+0

Спасибо. Это тоже очень хорошо. – achimneyswallow

1

Попробуйте это:

[int(x in S) for x in L] 
+0

Спасибо. это работает очень хорошо. – achimneyswallow

1

Вы можете использовать питона список понимание следующим образом:

ans=[1 if x in S else 0 for x in L] 
1

Я попробовал карту (S, L), но очевидно, список не отозваны.

Но его методы:

>>> map(S.count, L) 
[1, 0, 0, 1, 0] 

(Это один предполагает, нет дубликатов в S. Если это не так, то вы могли бы, например, использовать map(list(set(S)).count, L) вместо этого.)

+0

Спасибо. Это действительно здорово! – achimneyswallow

Смежные вопросы