Python 如何描述两个字典的比率的笛卡尔乘法?

Python 如何描述两个字典的比率的笛卡尔乘法?,python,pandas,numpy,networkx,Python,Pandas,Numpy,Networkx,我有两本字典,像这样: 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]] 它描述了第一节和第二节中每个节点的比率。 有人能帮我一下吗?下面的NumPy解决方案很有效。在提取值之前,必须对字典进行排

我有两本字典,像这样:

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]]
它描述了第一节和第二节中每个节点的比率。
有人能帮我一下吗?

下面的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      ]])

为什么要使用numpy或networkx?这些都与你的问题无关。也许你想使用pandas?只需使用python标准库,你就可以轻松做到这一点。我想与这些词典建立一个网络,我的词典比我的示例@DYZI know更大,但我的词典有大约200k个密钥,我想一些包解决了这个问题,具有更好的性能和实现。