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