2016-07-26 13 views
0

私は2kdの木の間の最短距離を見つけようとしていますが、scipy関数 'sparse_distance_matrix'を使っています。結果は{(1,2):4.54}という形式のキーマトリクスの辞書に戻されます。キーのscipy辞書で最小値とキーを見つける方法はありますか?

その可能性は、次のコードを使用して値を取得しますが、何の方法は、最小値とそのキーでタプルを返します。そのタプルの形

sparsemin = sp.KDTree.sparse_distance_matrix(aKD,bKD,20) 
m = min(sparsemin.itervalues()) 
+0

トップの票が提案複製、http://stackoverflow.com/questions/3282823/get-key-with-the-least-value-from-a-dictionaryに答えて、ここでは動作しません。これは 'sparse.dok'マトリックスです。これは辞書のサブクラスです。それは独自の 'get'メソッドを持っています。 – hpaulj

答えて

1

min(sparsemin.items(), key=lambda item: (item[1], item[0]))ので、キーの値を取得するために動いていないようにみえ。

a = {(1,2): 2.54, (1, 0): 4.52} 
min(a.items(), key=lambda item: (item[1], item[0])) 
>> ((1, 2), 2.54) 
+0

やや簡単に、 'min(a、key = a.get)'です。 –

+0

この 'a.get'は、仮定された重複に対する最上位の答えです:http://stackoverflow.com/questions/(キーを返すだけです)キーを与えられた値を取得することは、読者に練習として残されます。 3282823/get-key-of-the-least-value-a-dictionaryを使用しています。その場合は動作しますが、ここでは動作しません。 'IndexError:indexは整数の対でなければならない '。 – hpaulj

+0

これはまばらな 'dok'辞書です。通常の辞書のサブクラスとして実装されています。 – hpaulj

関連する問題