我有两个用作稀疏向量的字典:
dict1 = {'a': 1, 'b': 4}
dict2 = {'a': 2, 'c': 2}
我编写了自己的 __add__
函数来获得所需的结果:
dict1 = {'a': 3, 'b': 4, 'c': 2}
了解每个对应值的字符串“a”、“b”和“c”非常重要。仅确保添加正确的尺寸是不够的。我还将获得更多以前未知的字符串,其中包含一些我目前刚刚添加到字典中的值。
现在我的问题是:是否有更有效的数据结构?我查看了 Numpy 的数组和 Scipy 的稀疏矩阵,但据我了解,它们在这里并没有真正的帮助,还是我只是没有看到解决方案?
我可以将键和值保存在单独的数组中,但我不认为我可以仅使用任何现有的函数来获得所需的结果。
dict1_keys = np.array([a, b])
dict1_values = np.array([1, 4])
dict2_keys = np.array([a, c])
dict2_values = np.array([2, 2])
# is there anything that will efficiently produce the following?
dict1_keys = np.array([a, b, c])
dict1_values = np.array([3, 4, 2])
最佳答案
也许pandas就是您要找的:
d1 = pandas.DataFrame(numpy.array([1, 4]), index=['a', 'b'], dtype="int32")
d2 = pandas.DataFrame(numpy.array([2, 2]), index=['a', 'c'], dtype="int32")
d1.add(d2, fill_value=0)
结果:
0
a 3
b 4
c 2
关于python - 更有效的解决方案?字典作为稀疏向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30411388/