我有一个名为self的字典.__序列读起来像“ID:DNA sequence”,以下是该字典的一部分
{'1111758': ('TTAGAGTTTGATCCTGGCTCAGAACGAACGCTGGCGGCAGGCCTAA\n', ''),
'1111762': ('AGAGTTTGATCCTGGCTCAGATTGA\n', ''),
'1111763': ('AGAGTTTGATCCTGGCCTT\n', '') }
我想将字典的值连接成一个单独的字符串或序列(没有\ n而没有“”),也就是说,我想要像
这样的东西"TTAGAGTTTGATCCTGGCTCAGAACGAACGCTGGCGGCAGGCCTAAAGAGTTTGATCCTGGCTCAGATTGAAGAGTTTGATCCTGGCCTT"
我写下面的代码,然而,它没有给出我想要的东西。我想这是因为该值有两个元素(DNA序列和“”)。我正在努力改进我的代码。谁能帮助我让它发挥作用?
def sequence_statistics(self):
total_len=self.__sequences.values()[0]
for i in range(len(self.__sequences)):
total_len += self.__sequences.values()[i]
return total_len
答案 0 :(得分:2)
这将迭代序列的排序键,提取dict中元组的第一个值并去除空格。请注意{2}中的dicts
无序:
''.join(d[k][0].strip() for k in sorted(self.__sequences))
答案 1 :(得分:1)
>>> d = {'1111758': ('TTAGAGTTTGATCCTGGCTCAGAACGAACGCTGGCGGCAGGCCTAA\n', ''),
... '1111762': ('AGAGTTTGATCCTGGCTCAGATTGA\n', ''),
... '1111763': ('AGAGTTTGATCCTGGCCTT\n', '') }
>>>
>>> lis = []
>>> for tup in d.values():
... lis.append(tup[0].rstrip('\n'))
...
>>> ''.join(lis)
'AGAGTTTGATCCTGGCTCAGATTGAAGAGTTTGATCCTGGCCTTTTAGAGTTTGATCCTGGCTCAGAACGAACGCTGGCGGCAGGCCTAA'
>>>
答案 2 :(得分:0)
请尝试使用此代码:
return "".join(v[0].strip() for k, v in self.__sequences.items())
答案 3 :(得分:0)
这是一个生成每个值的第一个元素的生成器,其中“\ n”被剥离:
(value[0].strip() for value in self.__sequences.values())
由于您可能希望按键对它们进行排序,因此它会变得稍微复杂一些:
(value[0].strip() for key, value in sorted(self.__sequences.items()))
要把它变成一个由''(空字符串)连接起来的单个字符串,请执行:
''.join(value[0].strip() for key, value in sorted(self.__sequences.items()))