1

总的来说,我对 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,但我真的只是因为缺乏经验而在黑暗中磕磕绊绊。

谢谢你的帮助!

4

3 回答 3

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]
于 2012-07-08T20:10:44.933 回答
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
于 2012-07-08T20:28:26.253 回答
0

以下 Python 示例应该可以解决您的问题。

score = lambda x,y,z: x+y+z

best_key = max(
    mydict.iteritems(),
    key = lambda i:score(*i[1])
)[0]
于 2012-07-08T20:15:45.780 回答