矩阵,如果在2个节点之间存在边,则取值为1;否则,从邻接字典取值为0

问题描述

我有一个这样的邻接字典:

{1: {8,2},2: {3},5: {9,7},7: {8},3: {8,4},4: {5},8: {9},9: {7}}

要做代码是:

list = [(1,2),(2,3),(5,7),9),(7,8),(3,4),(4,5),(8,(9,(1,8)]

dic = {}
for x,y in list:
    dic.setdefault(x,set()).add(y)
return dic

我想产生一个矩阵,如果在2个节点之间存在边,则取值为1,否则为0。这是我想要的示例:

[0,1,0]
[0,1]
[0,0]

这就是我想要的邻接字典。

预先感谢

解决方法

这是另一种解决方案

def augmentate(self,image: np.ndarray,target: Dict[str,Union[np.ndarray,torch.Tensor]]):
,

您可以这样做:

import pprint

lst = [(1,2),(2,3),(5,7),9),(7,8),(3,4),(4,5),(8,(9,(1,8)]

dic = {}
for x,y in lst:
    dic.setdefault(x,set()).add(y)

size = max(dic) + 1
result = [[int(j in dic and i in dic[j]) for i in range(1,size)] for j in range(1,size)]

pprint.pprint(result) # just for pretty printing