Перебирайте значения словаря и печатайте впоследствии - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь напечатать следующий словарь в формате иерархии

fam_dict{'6081740103':['60817401030000','60817401030100','60817401030200',
'60817401030300','60817401030400','60817401030500','60817401030600'] 

, как показано здесь:

60817401030000
    60817401030100
        60817401030200
            60817401030400
                60817401030500
                    60817401030600

Пока у меня есть следующий код, который работает, но янеобходимость вручную вводить i-й индекс в каждой строке.Как я могу перенастроить этот код в рекурсивном формате вместо того, чтобы подсчитывать, сколько строк кода и вручную помещать значение индекса каждый раз

  my_p = node(fam_dict['6081740103'][0], None)
    my_c = node(fam_dict['6081740103'][1], my_p)
    my_d = node(fam_dict['6081740103'][2], my_c)
    my_e = node(fam_dict['6081740103'][4], my_d)
    my_f = node(fam_dict['6081740103'][5], my_e)
    my_g = node(fam_dict['6081740103'][6], my_f)

    print (my_p.name)
    print_children(my_p)

Ответы [ 5 ]

0 голосов
/ 12 июня 2018

Вы можете создать переменную, в которой будет храниться строка, по которой вы выполняете итерацию, а затем увеличивать переменную каждый раз в цикле.Вы можете умножить эту переменную на \ t. Это оператор вкладок, чтобы контролировать, сколько вкладок вы хотите.Вот пример:

строк = 0

fam_dict = {'6081740103': ['60817401030000','60817401030100','60817401030200',
           '60817401030300','60817401030400','60817401030500','60817401030600']}

for k, val in fam_dict.items():
   for v in val:
       lines += 1
       t = '\t'
       t = t * lines
       print(t + str(v))

Вот ваш вывод:

60817401030000
    60817401030100
        60817401030200
            60817401030300
                60817401030400
                    60817401030500
                        60817401030600
0 голосов
/ 12 июня 2018

Попробуйте:

fam_dict = {'6081740103':['60817401030000','60817401030100','60817401030200',
'60817401030300','60817401030400','60817401030500','60817401030600']}
l = fam_dict['6081740103']
for i in l:
   print(' '*l.index(i)*4+i)

Вывод:

60817401030000
    60817401030100
        60817401030200
            60817401030300
                60817401030400
                    60817401030500
                        60817401030600
0 голосов
/ 12 июня 2018

Вы можете попробовать это:

fam_dict = {'6081740103':['60817401030000','60817401030100','60817401030200',
'60817401030300','60817401030400','60817401030500','60817401030600']}

for i, val in enumerate(fam_dict['6081740103']):
    print(' ' * i * 4 + val)

, который выводит желаемую иерархию:

60817401030000
    60817401030100
        60817401030200
            60817401030300
                60817401030400
                    60817401030500
                        60817401030600
0 голосов
/ 12 июня 2018

Вы тоже можете сделать это так.

for key in fam_dict.keys():
    for i in range(len(fam_dict[key])):
        print(i*"\t"+ fam_dict[key][i])
0 голосов
/ 12 июня 2018

Вот пример:

fam_dict = {'6081740103':['60817401030000','60817401030100','60817401030200','60817401030300','60817401030400','60817401030500','60817401030600']}
for k, v in fam_dict.items():
    for i, s in enumerate(v):
        print("%s%s"% ("\t"*i, s))

Если вы хотите создать для него узлы:

fam_dict = {'6081740103':['60817401030000','60817401030100','60817401030200','60817401030300','60817401030400','60817401030500','60817401030600']}
node_list = []
for k, v in fam_dict.items():
    last_parent = none
    for i, s in enumerate(v):
        print("%s%s"% ("\t"*i, s))
        node_list.append(node(v, last_parent))
        last_parent=node_list[-1]

Родительским узлом будет node_list[0].

...