2016-12-21 3 views
0
структура

Необходимые данные:Как создать и распечатать многоуровневый словарь в python?

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

Я пытаюсь создать и распечатать приведенную выше структуру данных с помощью питона словарей. Я очень новичок в Python, поэтому я не могу его создать. Нужна помощь в его создании.

Try:

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: у моей требуемой структуры данных есть два гена (ген1 и ген2), а у 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) 

Ваш вопрос очень неясна, но здесь является возможным решением.

items() в python2 является iteritems()

Этот выход будет:

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

gene1gene2 является ключом во внешнем Dict, CDS и exon являются внутренними dicts (значения внешнего Dict) и их значения - это списки (вложенные списки)

Смежные вопросы