[問題] 如果讓無間隔的連續字 推得字典對應值?

作者: 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