Обход дерева Python K-ary выдает ошибку при значении словаря 2 или более

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

У меня есть отчет Excel, который включает в себя список From Nodes а также To Nodes что мне нужно выполнить предварительный обход, чтобы я мог предоставить им некоторые значения смещения и поместить в другую программу.

Я продолжаю получать сообщение об ошибке, как только код попадает на узел, содержащий лист и дочерний элемент.

Очень занятый коллега помог мне написать это и две его строчки, которые я не могу понять, даже когда он мне это придумал.

        child_entries = grouped_dict[self.node_id]
        self.children = [Tree(c, grouped_dict, parent=self) for c in grouped_dict[self.node_id]]

Помогите!!!

import pandas as pd
import pprint
pp = pprint.PrettyPrinter(indent=0)
import cytoolz.curried as cc
from collections import deque

# reads in From Node & To Node and creates the list for traversing through
tree_grouped_dict = cc.pipe(
    (pd.read_csv('Report.csv')
     .loc[:, ['From Node', 'To Node']]
     .values.tolist())
    , cc.filter(lambda x: x[1] != ' ')
    , lambda x: [cc.map(str, z) for z in x]
    , cc.map(tuple)
    , list
    , cc.groupby(lambda x: x[0])
    , cc.valmap(lambda x: [y[1] for y in x])
)

class Tree(object):
    def __init__(self, node_id, grouped_dict, parent=None):
        self.node_id     = node_id
        self.parent      = parent
        print(self.node_id)

        child_entries = grouped_dict[self.node_id]
        self.children = [Tree(c, grouped_dict, parent=self) for c in grouped_dict[self.node_id]]

    def dfs(self):
        yield self
        remaining = deque(self.children)
        while remaining:
            current = remaining.popleft()
            yield current
            remaining.extendleft(current.children)

    def bfs(self):
        if self.parent:
            remaining = deque(self.siblings)
        else:
            yield self
            remaining = deque(self.children)
        while remaining:
            current = remaining.popleft()
            yield current
            remaining.extend(current.children)

# finds the root of the tree
root = cc.pipe(
    tree_grouped_dict.keys()
    , cc.filter(lambda x: x not in cc.concat(tree_grouped_dict.values()))
    , cc.first
)

# performs the traversal
tree = Tree(root, tree_grouped_dict)

runfile ('C: / Users / Desktop / Новая папка /Report.py', wdir='C:/Users/Desktop/ Новая папка') T0764B03_1 5680670 5680672 5680671 5680546 103357097 Трассировка (последний последний вызов):

Файл "C:/Users/Desktop/ Новая папка /Report.py", строка 26, в init child_entries = grouped_dict [self.node_id]

KeyError: '103357097'

Данные в виде файла CSV, но это просто две колонки с From Node а также To Node,

From Node,To Node
T0764B03_1,5680670
5680670,5680672
5680672,5680671
5680671,5680546
5680546, 
5680546,103357097
5680546,5680420
5680420,25934531
25934531, 
25934531,25934519
25934519,103463004
103463004,103463119
103463119,103463101
103463101,25739714
25739714,26934903
103463101,25796517
25796517, 
103463119,26689859
26689859, 
103463004,26340683
26340683, 
25934519,5680216
5680216,5680222
5680222,103644533
103644533,103775275
103644533,103775481
103644533,103775479
5680222,103333952
103333952, 
5680216,5680213
5680213,103103228
103103228, 
5680213,5680208
5680208, 
25934519,25389175
25389175, 
25389175,25677598
25677598, 
25677598,25925120
25925120, 
25925120,103463017
103463017,103463023
103463023,103269411
103269411, 
103463023,26934928
103463017,26681098
26681098, 
25389175,25688577
25688577,25688578
25688578,KS65_1530040
KS65_1530040, 
KS65_1530040,5680065
5680065, 
25688578,MN89P_1530047
MN89P_1530047, 
MN89P_1530047,103246129
25688577,5680245
5680245, 
25934531,103644965
103644965,103644970
103644970,25121271
25121271,26828791
25121271,26261769
26261769, 
103644970,103617834
103644965,103617813
103617813,103618015
103618015, 
103617813,103617820
103617820,103617997
103617997, 
103617997,103618017
103617820,103617819
25934531,103075024
103075024,103075017
103075017,103775471
103075017,103644928
103075017,103775477
103075017,25139333
25139333, 
25139333,25139331
25139331, 
25139331,25420219
25420219, 
25420219,5680426
5680426, 
5680426,26828793
26828793, 
26828793,26828794
103075024,103141598
103141597, 
103075024,5680432
5680432, 
5680432,103141597
5680420, 
5680420,25252840
25252840, 

0 ответов

Другие вопросы по тегам