将二维阵列转换为三维阵列



我有一个格式为(image,ID(的2D阵列,其中一些图像具有相同的ID。例如:

data_2d = [(image1, 1) , (image2, 2),(image3, 2) , image(4, 2) , (image5,3), (image6,3)]

现在我的目标是使用他们的id号将其转换为3D阵列。更清楚的是:

data_3d = [[(image1, 1) ] , [(image2, 2),(image3, 2) , image(4, 2)] , [(image5,3), (image6,3)]]  

有办法吗?

使用字典(或defaultdict(按id对元组进行分组,然后将字典的值转换为列表:

from collections import defaultdict
data_2d = [('image1', 1), ('image2', 2), ('image3', 2), ('image4', 2), ('image5', 3), ('image6', 3)]
groups = defaultdict(list)
for e in data_2d:
groups[e[1]].append(e)
data_3d = list(groups.values())
print(data_3d)

输出

[[('image1', 1)], [('image2', 2), ('image3', 2), ('image4', 2)], [('image5', 3), ('image6', 3)]]

请注意,我将变量名更改为字符串,以使代码可运行。

最新更新