2016-07-28 80 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

您可以使用Python的列表理解如下:

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