2016-12-21 1 views
0

데이터 구조 : I 만들고 파이썬 사전을 사용하여 위의 데이터 구조를 인쇄하려고파이썬으로 다중 레벨 사전을 만들고 인쇄하는 방법은 무엇입니까? 필요한

Name -->gene1 
      --> CDS 
        1 3 
        6 10 
      --> exon 
        4 8 
     ->gene2 
      --> CDS 
        4 9 

. 나는 Python을 처음 접했기 때문에 그것을 만들 수 없다. 그것을 만드는 데 도움이 필요합니다.

시도 :

dict = {'name' :{'gene1': {'CDS' : [1, 3]}}} 
for name in dict: 
     print name 
     for gene in dict[name]: 
       print "\t" +gene 
       for feature in dict[name][gene]: 
         print "\t\t"+feature 
         print "\t\t\t", 
         print dict[name][gene][feature] 

출력 :

name 
     gene1 
       CDS 
         [1, 3] 
+2

그래서 ... 정확히 무엇이 문제입니까? 당신은 다단계 사전을 만들었던 것처럼 보입니다. 정확히 어떻게 당신이 그것을 요구했는지를 인쇄하고 있습니다. – jonrsharpe

+2

첫 번째와 중요한 것은 dict을 var 이름으로 사용하지 말고 dict는 python의 특수 단어 – Miguel

+0

@jonrsharpe : 필요한 데이터 구조에는 두 개의 유전자 (gene1과 gene2)가 있고 CDS에는 두 개의 행이 있습니다. 문제가 있습니다. 사전의 일부. – Arijit

답변

2
dct = {"gene1": {"CDS": [[1, 3], [6, 10]], "exon": [[4, 8]]}, "gene2": {"CDS": [[4, 9]]}} 

for outer_key, outer_value in dct.items(): 
    print(outer_key) 
    for inner_key, inner_value in outer_value.items(): 
     print("\t", inner_key) 
     for elem in inner_value: 
      print("\t\t", elem) 

귀하의 질문은 매우 명확하지만, 여기에 가능한 솔루션입니다. python2에

items()iteritems()

이가 출력이다

gene2 
     CDS 
       [4, 9] 
gene1 
     CDS 
       [1, 3] 
       [6, 10] 
     exon 
       [4, 8] 

gene1gene2는 외부 딕셔너리의 핵심이다 CDSexon 이너 dicts (외측 딕셔너리의 값) 및 그들의 값은 목록 (중첩 목록)

관련 문제