列表嵌套列表转换为键值对。

6

我有一个字符串,其中以分号为分隔符,然后是空格分隔符:

'gene_id EFNB2; Gene_type cDNA_supported; transcript_id EFNB2.aAug10; product_id EFNB2.aAug10;'

我想通过基于分隔符的切分一行文本来创建一个词典,但目前只能得到一个列表嵌套列表:

filter(None,[x.split() for x in atts.split(';')])

这给了我:

[['gene_id', 'EFNB2'], ['Gene_type', 'cDNA_supported'], ['transcript_id', 'EFNB2.aAug10'], ['product_id', 'EFNB2.aAug10']]

当我想要的是:

{'gene_id': 'EFNB2', 'Gene_type': 'cDNA_supported', 'transcript_id': 'EFNB2.aAug10', 'product_id': 'EFNB2.aAug10'}

我尝试过:

filter(None,{k:v for k,v in x.split() for x in atts.split(';')})

但是它没有给我任何东西。有人知道如何完成这个任务吗?

1个回答

4

您现在非常接近了,只需在列表中调用dict即可:

>>> lst = [['gene_id', 'EFNB2'], ['Gene_type', 'cDNA_supported'], ['transcript_id', 'EFNB2.aAug10'], ['product_id', 'EFNB2.aAug10']]
>>> dict(lst)
{'Gene_type': 'cDNA_supported',
 'gene_id': 'EFNB2',
 'product_id': 'EFNB2.aAug10',
 'transcript_id': 'EFNB2.aAug10'}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接