我正在尝试创建一个由多个词典组成的词典。我是从一个.txt文件创建的:
chrY 6 8 +
chrY 3 5 +
chrX 10 11 +
chrX 13 15 -
我想要的结果是:
{'chrY': {'+' : {'start': [3 , 6], 'end': [5, 8]}}, 'chrX': {'+' : {'start': [10], 'end': [11]} , '-': {'start' : [13], 'end' : [15]}}}
到目前为止,我的代码包括:
import sys
first_dict = {}
intron_dict = {}
def main():
with open(sys.argv[1], 'r') as intron:
for line in intron.readlines():
line = line.split()
chromosome = line[0]
start = line[1]
end = line[2]
strand = line[3]
first_dict = {chromosome : (strand, start, end)}
for k, v in first_dict.iteritems():
intron_dict.setdefault(k, []).append(v)
print (intron_dict)
if __name__=='__main__':
main()
这段代码允许我对chrY和chrX键进行排序,而不会覆盖值。我在合并“+”和“-”键以及将数据转换为所需格式时遇到问题。到目前为止,我的输出看起来像:
{'chrY': [('+', '6', '8'), ('+', '3', '5')], 'chrX': [('+', '10', '11'), ('-', '13', '15')]}
这里是另一个没有
defaultdict
的方法。只是用if ... else
输出:
您可以使用嵌套的^{} 来简化代码,其中第三级的值是列表:
输出:
一种方法是使用defaultdict。对于exmaple:
结果:
相关问题 更多 >
编程相关推荐