【发布时间】:2020-09-09 00:39:05
【问题描述】:
我正在尝试创建一个进程树。我有 .csv 文件,其中两列采用这种父子格式。未设置行数。我想创建一个格式为{Parent : {Child : {}, Child: {}}} 的嵌套字典,其中父键具有其子级的字典作为值,而这些子级具有其子级的字典。
这就是输入的具体内容:
- [PPID,PID]
- [PPID,PID]
- [PPID,PID]
- [PPID,PID]
- ...等
我在这里找到了递归解决方案:Create a nested dictionary using recursion Python
def split(data):
if len(data) == 0:
return data #trivial case, we have no element therefore we return empty list
else: #if we have elements
first_value = data[0] #we take the first value
data = {first_value : split(data[1:])} #data[1:] will return a list with every value but the first value
return data #this is called after the last recursion is called
但是,这似乎对我不起作用,因为它只会为父母显示一个孩子。我一直在寻找,但找不到方法。
【问题讨论】:
-
您是否在寻找最佳解决方案(时间和/或空间)?我可以立即想到的一种方法是遍历数据一次以获取字典的键,然后再次迭代以获取每个键的直接子项(这将为您提供邻接列表)。在此之后,初始化第二个字典,并且对于第一个字典中的每个键,使用 DFS 遵循从父节点开始并在父节点的每个子节点结束的路径。在您的第二本词典中保留这些路径的副本。完成后,第二本词典就是您要查找的内容。
-
转换字典列表(id-parent)看:stackoverflow.com/a/71555459/15392974
标签: python dictionary tree nested