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 に答える