如何找到(x,y):z类型字典的min(x,y)和max(x,y)

时间:2016-06-13 09:16:53

标签: python

我有以下类型的字典(x, y): id

{
    (91, 23): 1, (65, 24): 6, (47, 35): 4, (17, 20): 0, (56, 25): 6, (79, 38): 8, (18, 19): 0, (43, 25): 4, (61, 38): 6,
    (44, 28): 4, (48, 37): 4, (72, 34): 8, (71, 26): 8, (73, 35): 8, (80, 34): 8, (81, 35): 8, (12, 17): 0, (63, 30): 6,
    (15, 34): 0, (33, 36): 3, (49, 38): 4, (7, 22): 0, (29, 37): 3, (57, 29): 6, (64, 32): 6, (10, 36): 0, (43, 30): 4,
    (58, 26): 6, (32, 25): 3, (94, 23): 1, (18, 36): 0, (96, 38): 1, (45, 28): 4, (73, 36): 8, (80, 25): 8, (59, 36): 6,
    (9, 19): 0, (74, 35): 8, (81, 36): 8, (96, 28): 1, (97, 25): 1, (24, 33): 3, (26, 33): 3, (46, 30): 4, (16, 29): 0,
    (17, 24): 0, (89, 33): 1, (94, 30): 1, (18, 31): 0, (13, 18): 0, (95, 31): 1, (94, 32): 1, (9, 20): 0, (24, 28): 3,
    (14, 19): 0, (81, 29): 8, (96, 19): 1, (95, 37): 1, (10, 19): 0, (75, 35): 8, (82, 26): 8
} 

如何查找所有ID的minXmaxXminYmaxY

注意:ID是数字但不是连续的。像0,1,3,4,6,8

澄清: 此词典是应用于图像的连接分量标记算法的结果。对于给定的(x, y): idxy显示像素的位置,id显示id的提取的blob。我想找到所有blob的minXmaxXminYmaxY,并从图像中提取这些blob。最后,我想知道blob的界限,如

{
 id1:(minx,maxx,minY,maxY),
 id2:(minx,maxx,minY,maxY)
}

2 个答案:

答案 0 :(得分:1)

也许这样的事情会起作用:

x = []
y = []
for coordinates in dict.keys():
    x.append(coordinates[0])
    y.append(coordinates[1])
minX = min(x)
maxX = max(x)
minY = min(y)
maxY = max(y)

答案 1 :(得分:1)

这是工作答案。可能这不是最好的答案。

box = {}
for (x,y),id in labels.items():
    if id not in box:
        box[id] = (x,y,x,y)
    else:
        minX = min(box.get(id)[0],x)
        minY = min(box.get(id)[1],y)
        maxX = max(box.get(id)[2],x)
        maxY = max(box.get(id)[3],y)
        box[id] = (minX,minY,maxX,maxY)