我有一个非常大的 (p, q) 元组集合,我想将它们转换成列表字典,其中每个元组中的第一项是索引包含 q 的列表的键。
例子:
Original List: (1, 2), (1, 3), (2, 3)
Resultant Dictionary: {1:[2, 3], 2:[3]}
此外,我想有效地组合这些词典。
例子:
Original Dictionaries: {1:[2, 3], 2:[3]}, {1:[4], 3:[1]}
Resultant Dictionary: {1:[2, 3, 4], 2:[3], 3:[1]}
这些操作驻留在一个内部循环中,所以我希望它们尽可能快。
提前致谢
原文由 user108088 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果元组列表已排序,
itertools.groupby
正如@gnibbler 所建议的那样,它是defaultdict
的一个不错的替代方案,但它需要以不同于他建议的方式使用:对于将列表的字典“合并”到一个新的 dol.. 中:
我给
[]
昵称no
以避免无用地构建大量空列表,因为性能很重要。如果 dols 键的集合只是适度重叠,则更快的是:因为这只对重叠的键使用列表连接——所以,如果这些键很少,它会更快。