问题描述
给定两个字符串,A和B的长度各不相同(它们可能具有相同的长度),当A中的字符与B中的字符匹配时,我想将B的索引映射到A的索引。
# Example 1
string A: 'DsgiAKKBCLIDFCFCE'
string B: 'ABDCEF'
answer: {0:4,1:7,2:11,3:13,4:16}
# Example 2
string A: 'ECDABF'
string B: 'ABDCEF'
answer: {0:3,1:4,5:5}
# Example 3
string A: 'GKVRVNAL'
string B: 'TFTGKVRNHNLGDSVNALT'
answer: {3:0,4:1,5:2,6:3,14:4,15:5,16:6,17:7}
我描述代码工作方式的方式是这样的:
# For example 1
string A: DsgiAKKBCLIDFCFCE
B match: A B D C E
B index: 0 1 2 3 4
F不存在,因为在字符串A中的E之后找不到它。
# For example 2
string A: ECDABF
B match: ABF
B index: 1,2,5
# For example 3
string A: GKVRVNAL
B match: GKVRVNAL
B index: 3,4,5,6,14,15,16,17
解决方法
说实话,我不完全理解您的问题。另外,不应使用biopython对其进行标记,因为根本没有使用该库。
我尝试完成您的任务
a = 'ABDCE'
b = 'DSGIAKKBCLIDFCFCE'
i = 0
result = []
for c_a in a:
while i < len(b):
if b[i] == c_a:
result.append(i)
break
i += 1
print(result)
您以[4,7,11,13,16]
为例。我决定使用列表而不是字典,因为索引无论如何都是从0开始的连续数字。