我有一个格式为(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)]]
请注意,我将变量名更改为字符串,以使代码可运行。