将列表映射到引用列表

时间:2016-07-28 03:40:19

标签: python list mapping

我试图尽可能清楚地说明这一点。如果我要澄清任何事情,请告诉我。

我在列表中有一长串变量列表,格式如下 -

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

这样做的好方法是什么?谢谢!!

4 个答案:

答案 0 :(得分:1)

通过使用列出L中每个值的列表推导,如果它包含在S中,则返回值1,如果不是,则返回值{ 0

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

结果是:

[1, 0, 0, 1, 0]

答案 1 :(得分:1)

试试这个:

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

答案 2 :(得分:1)

你可以使用python的列表理解如下:

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

答案 3 :(得分:1)

  

我尝试了地图(S,L),但显然列表不可调用。

但它的方法是:

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

(这个假设在S中没有重复。如果不是这样,你可以改为使用map(list(set(S)).count, L)。)