将字典的值连接成单个字符串或序列

时间:2014-02-12 12:38:36

标签: python python-2.7

我有一个名为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

4 个答案:

答案 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()))