将字符串数组转换为1和0的数组

时间:2015-11-01 15:18:39

标签: python arrays

我有一个如下所示的数组:

    body {
background-image: url('http://i.stack.imgur.com/eWFou.jpg');
background-repeat:no-repeat;
background-position:center;
    background-size:cover;//ANSWER
background-attachment:fixed;
width: 100%;
height: 100%;
}

我想创建一个新数组y,以便:

x = ['Green', 'Red', 'Red', 'Red', 'Green', ...]

我尝试过以下操作但不起作用:

y = [1, 0, 0, 0, 1, ...]
  

TypeError:list indices必须是整数,而不是str

2 个答案:

答案 0 :(得分:2)

您可以创建所需映射的字典,然后将其映射到list。如果您有很多案例,这会更灵活。

In [8]: x = ['Green', 'Red', 'Red', 'Red', 'Green']

In [9]: d = {'Green':1, 'Red':0}

In [10]: map(d.get, x)
Out[10]: [1, 0, 0, 0, 1]

答案 1 :(得分:1)

for v in <sequence>遍历元素&lt;序列&gt;

使用n代替x[n]并且不要忘记使用空列表初始化y

y = []
for n in x:
    if n == 'Red':
        p = 0
    if n == 'Green':
        p = 1
    y.append(p)

如果x中有2个不同的单词(绿色和红色),那么您可以使用列表理解来简化此操作,例如

y = [1 if == 'Green' else 0 for n in x]

甚至

y = [int(n == 'Green') for n in x]

否则创建字典并将颜色名称映射到相应的数字,例如

numbers = {
    'Red': 0,
    'Green': 1,
    # More colors
}

y = [numbers[n] for n in x]