基于字典信息标记坐标



下面是我的字典信息

Z = {1: [[7,0],[7,1]], 
2: [[3,4],[2,4]],
3: [[0,3],[4,6]]} 

下面是我的坐标阵列

X = [[7,0],[0,3],[3,4],[4,6],[7,1],[2,4]]

我想生产的是这个

Y = [1,3,2,3,1,2]

所以基本上Y是基于Z的信息来标记坐标X的。我如何在python中实现这一点?

以下是您的问题:

Z = {1: [[7,0],[7,1]], 
2: [[3,4],[2,4]],
3: [[0,3],[4,6]]} 
# Below is my coordinate array
X = [[7,0],[0,3],[3,4],[4,6],[7,1],[2,4]]
# What I want to produce is this
Y1 = [1,3,2,3,1,2]
Y = []
for coord in X:
hit = None
for k in Z:
if coord in Z[k]:
hit = k
break
Y.append(hit)
print(Y)
print(Y1)

如果结构不是太大,可以反转Z并将其配对为字典键。但是列表是可变的,所以您必须将它们转换为元组:

Z = {1: [[7,0],[7,1]], 
2: [[3,4],[2,4]],
3: [[0,3],[4,6]]}
X = [[7,0],[0,3],[3,4],[4,6],[7,1],[2,4]]
z = {tuple(p):k for k,l in Z.items() for p in l}
{(7, 0): 1, (7, 1): 1, (3, 4): 2, (2, 4): 2, (0, 3): 3, (4, 6): 3}
Y = [z[tuple(p)] for p in X]
[1, 3, 2, 3, 1, 2]

最新更新