我对python和脚本编写起来相当新,所以请耐心等待......
我有一个python字典,其中包含键:值对,其中值是包含3d几何矩阵位置的嵌套列表:
{Point_Index: [position_X, position_Y, position_Z]}
我应该提到密钥是唯一的,但值不是。
如何搜索字典并根据字典中最高的position_X,position_y和Position_Z返回Point_Index键?
以下是我的词典示例:
Polygon1 = {0: [-3.1890000000000001, -3.1890000000000001, -0.30361509588790281], 9: [3.1890000000000001, -3.1890000000000001, -0.30361509588790281], 10: [-3.1890000000000001, 3.1890000000000001, -0.30361509588790281], 11: [3.1890000000000001, 3.1890000000000001, -0.30361509588790281]}
我正在尝试测试点位置以找到笛卡尔空间中给定向量中的最外点。因此(max_X,Max_Y,Max_Z)可以被视为最右上角,而(min_X,max_Y,max_Z)将是最左上角。最左边的点是(min_X,min_Y,min_Z),最右边的点是(max_X,min_Y,min_Z)。
我尝试了各种各样的方法,比如get,max,但我真的只是因为经验不足而陷入困境。
感谢您的帮助!
答案 0 :(得分:1)
max( (v[0],k) for k,v in dictionary.items() )[1]
max( (v[1],k) for k,v in dictionary.items() )[1]
max( (v[2],k) for k,v in dictionary.items() )[1]
答案 1 :(得分:1)
您可以将max
与key
功能一起使用:
>>> Polygon1 = {0: [-3.1890000000000001, -3.1890000000000001, -0.30361509588790281], 9: [3.1890000000000001, -3.1890000000000001, -0.30361509588790281], 10: [-3.1890000000000001, 3.1890000000000001, -0.30361509588790281], 11: [3.1890000000000001, 3.1890000000000001, -0.30361509588790281]}
>>> max(Polygon1, key=lambda k: Polygon1[k][0])
9
>>> max(Polygon1, key=lambda k: Polygon1[k][1])
10
>>> max(Polygon1, key=lambda k: Polygon1[k][2])
0
答案 2 :(得分:0)
以下Python示例应该可以解决您的问题。
score = lambda x,y,z: x+y+z
best_key = max(
mydict.iteritems(),
key = lambda i:score(*i[1])
)[0]