[问题] 如果让无间隔的连续字 推得字典对应值?

楼主: ajjj840569 (你爸)   2021-11-23 04:22:35
请教各位前辈
有一字串是:’CGTGATTACG’
假设给一字典={‘A’:’CGT’, B:’TACG’, ‘C’:’TT’, ‘D’:’GAT’}
要如何能print 出‘ADB’?
目前想法是先把字典转成list,把字串切割排进list
如[‘C’, ‘CG’, ‘CGT’, ‘CGTG’...]
再用for loop ,
if 字串list[(变量1):(变量2)]==原字典list[(变量3)][1]
不过for loop的变量与迭代不知该如何设定
才不会造成判断时字串重复?
Ex: 字串第五位开始的TTACG, 会被我切成’T’, ’TT’, ‘TTA’...’TACG’ 造成判
断到C(TT) 跟B(TACG)
结果就变成’ADCB’
应该如何解决呢?
感谢各位
作者: cuteSquirrel (松鼠)   2021-11-23 05:40:00
作者: papple23g (逆道者)   2021-11-23 13:01:00
可以用 startswithhttps://i.imgur.com/iQX43xL.png我的范例没有加上例外处理机制 必须确保关键字连续 空白可以加进字典 但不能切到关键字 最好的方式还是自己加上例外处理
作者: lenjoyn (带把的小乔)   2021-11-24 18:49:00
这看起来用trie 的资料结构就可以了

Links booklink

Contact Us: admin [ a t ] ucptt.com