ファイルからマルチレベル辞書を作成しようとしています。Pythonを使用してファイルからマルチレベル辞書を作成する方法
ファイル形式は怒鳴るようなものです:file.txtは
name1 gene1 cds 1 2 +
name1 gene1 cds 2 5 -
name1 gene1 exon 1 2 +
name1 gene1 exon 2 5 -
name1 gene2 cds 4 6 +
name1 gene2 cds 6 9 +
name1 gene2 exon 1 10 +
name1 gene2 exon 2 5 -
name2 gene1 gene 1000 1333 +
辞書データ構造は怒鳴るようなものです。
dct = { 'name1' : {'gene1':{'cds':[[1, 2, '+'],[2, 5, '-']], "exon": [[1, 2, '+'],[2, 5, '-']] } , 'gene2':{'cds':[[4, 6, '+'],[6, 9, '+']], "exon": [[1, 10, '+'],[2, 5, '-']] } } }
または単に理解のために:
name1
gene1
exon
1, 2, "+",
2, 5, "-"
CDS
1, 2, "+"
2, 5, "-"
gene2
CDS
4, 6 "+"
6, 9, "+"
exon
1, 10, "+",
2, 5, "-"
name2
...
...
私の試み:
dct[tmp[0]][tmp[1]][tmp2]=[tmp[3], tmp[4], tmp[5]]
この
に助けが必要です:辞書の作成中に、私は問題を取得していますimport re
def read_dct(name):
filename = name
dct = {}
ReadFH = open(filename, 'r')
for i, line in enumerate(ReadFH):
line = line.rstrip()
tmp=re.split(r'\t', line)
if(len(tmp) > 5):
dct[tmp[0]][tmp[1]][tmp2]=[tmp[3], tmp[4], tmp[5]]
ReadFH.close
return dct
filename = "file.txt"
dct = read_dct(filename)
print dct
0あなたが使用することができます
は、各 'exon'または' CDS'は3つの事の2セットを持っていることが保証されますか? – Arc676
いいえ、彼らは**複数のセット**との誤差を修正した後、それはあなたと同じだっただろうので、私の答えを削除した – Arijit