【发布时间】:2018-09-02 02:24:23
【问题描述】:
我有一个使用 Python3.x 列表字典的算法问题,但也许另一种数据结构更合适。
假设我有以下 Python 字典:
dict1 = {1:[4, 12, 22], 2:[4, 5, 13, 23], 3:[7, 15, 25]}
键 1 与值 [4, 12, 22] 关联表示 1 与 4“关联”。1 也与 12 关联,1 与 22 关联。此外,2 与 4 关联,2 与5、2关联13、1关联23等。
我的问题是,对于这个小例子,我如何“展开”这个字典,以便值列表的每个元素都编码这个“关联”?
也就是说,最终的结果应该是:
intended_dict = {1:[4, 12, 22], 2:[4, 5, 13, 23], 3:[7, 15, 25],
4:[1, 2], 5:[2], 12:[1], 13:[2], 15:[3], 22:[1], 23:[2], 25:[3]}
因为 4 与 1 相关联,4 与 2 相关联,5 与 2 相关联,等等。
有没有办法像这样“展开”字典?
这将如何扩展到包含数百万个整数的更大列表的更大字典?
也许另一种数据结构在这里会更有效,尤其是对于更大的列表?
编辑:鉴于我正在使用的实际字典的大小(不是上面发布的那个),该解决方案应尽可能提高内存/性能效率。
【问题讨论】:
-
这取决于您的值范围,但您可以使用稀疏矩阵(例如来自scipy)将关联存储在邻接矩阵中,以提高效率。
标签: python python-3.x dictionary key-value