我有一个 python 字典,如果可用的话,我需要在其中找到节点的 children

I have a python dictionary where i need to find the children of the nodes if available

我有以下字典表示 id:parent. {1: 2, 3: 1}

我需要循环并检查 id == parent 是否是 child。

例如这里: 1=1 所以 31 的 child。

我会相应地把它附加到词典中。 有什么想法吗?

 d={1:2, 3:1}
      for node in d:
dict1={1:2,2:3,3:1,4:1,5:2}
result={}
for key in dict1.keys():
    result[key]=[]
    for item in dict1.items():
        if key==item[1]:
            result[key].append(item[0])
print(result)  

output:
   {1: [3, 4], 2: [1, 5], 3: [2], 4: [], 5: []}

如果不想有那些没有child的id,可以这样写

dict1={1:2,2:3,3:1,4:1,5:2}
result={}
for key in dict1.keys():
    for item in dict1.items():
        if key==item[1]:
            if key not in result:
                result[key]=[]
            result[key].append(item[0])
print(result)
output:
{1: [3, 4], 2: [1, 5], 3: [2]}

O(n) 解决方案是:

child_parent = {1:2, 3:1, 4:1, 5:2, 1:5, 6:5, 7:2}
parent_children = {}
for child, parent in child_parent.items():
    parent_children.setdefault(parent, []).append(child)

给予:

{5: [1, 6], 1: [3, 4], 2: [5, 7]}

并且,为了便于评估,数据表示以下树:

  2
 / \
7   5
   / \
  6   1
     / \
    3   4