我有两个字典,像这样:

first_dict = {"key1": 1, "key2":2, "key3":3}
sec_dict = {"key1": 2, "key2": 3, "key3":4}


我想使用networkx或numpy具有如下矩阵:

[[1/2, 2/2, 3/2],
 [1/3, 2/3, 3/3],
 [3/2, 3/3, 3/4]]


描述了first_dict和sec_dict中每个节点的比率。
有人可以帮我吗?

最佳答案

以下NumPy解决方案起作用。在提取值之前,必须对字典进行排序,除非您确定它们已经按照排序的顺序排列。

_, vals1 = zip(*sorted(first_dict.items()))
_, vals2 = zip(*sorted(sec_dict.items()))


如果它们以前已经排序过,则可以忽略排序:

vals1 = list(first_dict.values())
vals2 = list(sec_dict.values())

np.array(vals1).reshape(-1,1) / np.array(vals2)

#array([[0.5       , 0.33333333, 0.25      ],
#       [1.        , 0.66666667, 0.5       ],
#       [1.5       , 1.        , 0.75      ]])

09-25 20:38