我有一个字典,其中包含作为子字符串的键,并且其值作为在序列中出现的开始和结束索引的列表。我必须标识那些进一步是另一个键的子字符串的键,并且较小长度键的索引范围位于较大长度键的范围内。例如:
{'TGTGT': [(1, 5), (3, 7)], 'GTGT': [(2, 5), (4, 7), (38, 41)], 'GTCA': [(6, 9), (17, 20), (40, 43)], 'CATG': [(8, 11), (27, 30), (42, 45)], 'CATGCTACG': [(8, 16), (27, 35)], 'ATGCTACG': [(9, 16), (28, 35)], 'TGCTACG': [(10, 16), (29, 35)], 'GCTACG': [(11, 16), (30, 35)], 'CTACG': [(12, 16), (31, 35)], 'TACG': [(13, 16), (32, 35)], 'GTGTCATG': [(4, 11), (38, 45)], 'TGTCATG': [(5, 11), (39, 45)], 'GTCATG': [(6, 11), (40, 45)], 'TCATG': [(7, 11), (41, 45)], 'ATGT': [(0, 3), (43, 46)]}
对于键“ TCATG”和“ GTCATG”,“ TCATG”是后者的子字符串,并且其范围索引(即(7,11),(41,45))位于“ GTCATG”的范围内,即(6,11),(40,45) 同样,对于其他键也是如此。
最有效的方法是什么?