我有一长串(i,j,值)对,每个位置有多个值,每个位置的值数量各不相同。
目前我正在初始化一个空的“3d”列表
sorted = numpy.empty((m, n, 0)).tolist()
然后我循环遍历数组中的每个条目并将值附加到列表中的 i, j 处。
for pixel in value_list:
sorted[pixel[0]][pixel[1]].append(pixel[2])
这很慢并且很难并行化,因为我必须写入相同的列表并且不知道它们最后会持续多长时间。
我认为我的问题非常相似
defaultdict 示例,用于将一系列键值对分组到列表字典中,其中键为“i,j”。
是否有更有效的解决方案或者可以轻松并行化的解决方案?
我本来打算建议使用 defaultdict 方法,但在我发布之前你编辑了问题。 不确定它会更快,但似乎它可能使用更少的内存。
from collections import defaultdict
pixel_values = defaultdict(list)
pixel_list = [
(1, 2, 42),
(2, 1, 43),
(1, 2, 44),
(3, 4, 45)
]
for pixel in pixel_list:
x, y, value = pixel
pixel_values[(x, y)].append(value)
print(pixel_values)