首页 > 解决方案 > 将字符串转换为位数组

问题描述

我怎样才能创建一个 Python 函数

并返回

因此,如果一个单词有'A'or'a'并且数组中的第一个点对应于'a',那么输出数组的第一个点将有 a 1

[1, ...]

如果一个单词有'B'or 'b',那么输出数组1的第二个位置将有 a 。如果一个词有 an'a'和 a 'b',那么输出数组1的第一个和第二个位置将有 a :

[1, 1, ...]

等等。所以字符串"abba"会产生这样的结果:

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

理想情况下,我还可以搜索不在字母表中的字符,例如!and ?,然后将其他位添加到数组中以表示这些字符。

欢迎任何帮助!万分感谢。

标签: pythonarraysstringsorting

解决方案


为什么不创建一个简单的映射字典

import string
alphabet=string.ascii_lowercase
d=dict(zip(alphabet,range(0,26)))
a=[0]*26

字典看起来像这样

{'a': 0,
 'b': 1,
 'c': 2,
 'd': 3,
 'e': 4,
 'f': 5,
 'g': 6,
 'h': 7,
 'i': 8,
 'j': 9,
 'k': 10,
 'l': 11,
 'm': 12,
 'n': 13,
 'o': 14,
 'p': 15,
 'q': 16,
 'r': 17,
 's': 18,
 't': 19,
 'u': 20,
 'v': 21,
 'w': 22,
 'x': 23,
 'y': 24,
 'z': 25}

查找和更新列表的逻辑

for i in set('aabbc?'):
    index_to_update=d.get(i,None)
    if index_to_update is not None:
        a[index_to_update]=1
print(a)#[1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

推荐阅读