【发布时间】:2014-07-21 07:12:23
【问题描述】:
我有两个 python 字典变量。一种是以ID为键,长字符串为值的字典,另一种是以不同类型的ID为键,以列表为值的字典。
它们看起来像这样:
**dContigData**
Chromosome_8.8 AAACGCAATAACCAGAAAACCAATTTTTAAAATATTAAACCCAACGAAAT...
Chromosome_8.4 CCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCC...
Chromosome_8.5 CTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCT...
Chromosome_8.6 GCCTGCTCGTAACCCTGACTCGTCCACCCCCAATCCGTCACCCCATTAAT...
Chromosome_8.7 CCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACC...
Chromosome_8.1 TCGCTTCGGCGGTCCTGCGGCATCTTTGTACTTCTTGTGGAAGTCGTCAA...
Chromosome_8.2 CCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACC...
Chromosome_8.3 TAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTA...
和其他:
e = dict() # temporary dictionary variable:
MGG_08464T0 ['Chromosome_8.4', 306312, 306647, 306759, 307475]
MGG_06151T0 ['Chromosome_8.3', 2749586, 2750617]
MGG_07594T0 ['Chromosome_8.3', 1141635, 1142444]
MGG_13455T0 ['Chromosome_8.3', 1512811, 1512907, 1513002, 1513487, 1513578, 1513822, 1514067, 1514645]
MGG_00992T0 ['Chromosome_8.5', 896033, 896144, 896226, 896573, 896655, 897307]
MGG_04622T0 ['Chromosome_8.1', 7084849, 7084958, 7085037, 7085724]
所以,我编写了代码来打印“dict e”中的键和“dict e”值[1]-1(第一种情况下为 306311,由于 python 位置而减去 1)中的 dContigData 值的子字符串到值[-1](第一种情况下为 307475)。但是,列表中的值的长度不同,尽管位置信息元素(列表中第一个元素之后的元素。例如 Chromosome_8.X)总是成对的。实际上,我要做的是迭代每个列表中的位置信息元素并将dContigData的字符串子串起来。
我的代码:
dContigData = readContigFasta()
#for key in dContigData:
# print(key, dContigData[key][0:50]+"...")
for key in e:
for contigID in dContigData:
if e[key][0] == contigID:
#print (key, e[key])
print (key, dContigData[contigID][e[key][1]-1:e[key][-1]]) # -1 for start base 0
编辑:好的,你们中的许多人不明白我的问题,所以如果你不理解上面的喃喃自语,请专注于下面的最终结果。 ;)
结果应该是(例如“dict e”中的第 5 个,有 3 个):
例如
MGG_00992T0 [896032]ATGGGCATTTCGGCTCGGGTCAGTAC[896144]...[896225]GCTGACCCATTACAGGTTGGGGGCTTTAA[896573]...[896654]ACCAAAGTTCCCACTTGTCCCCTGGGACCGAGATGTCCAACAATGA[897307]
[number] 和 ... 以便于理解(应该不包括在内)
有什么想法可以在循环时对字符串进行子串化,然后再连接回字符串?
【问题讨论】:
-
对您的代码的评论:您不需要内部循环,使用 e[key][0] 而不是 contigID。那我没看懂你的问题,你说的位置信息元素是什么意思?你能解释一下你想要再次实现的目标吗?我想这与列表中的位置编号有关,而不是第一个和最后一个元素,但我不确定你想如何使用它们。
-
感谢您对@Thibault 的关注。为了更容易理解,我稍微改变了这个问题。我想做的是用上面的位置信息切割字符串并将切割的字符串连接成一个。
标签: python string list dictionary substring