键值对列表列表

时间:2016-05-18 16:38:33

标签: python dictionary

我有一个以分号分隔的字符串,然后用空格分隔:

'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 个答案:

答案 0 :(得分: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'}