2016-07-26 16 views
0

Ich versuche den kürzesten Abstand zwischen 2 kd Bäumen zu finden und benutze die scipy Funktion 'sparse_distance_matrix'. Das Ergebnis wird in einem Verzeichnis der Schlüsselmatrix des Formulars {(1,2):4.54} zurückgegeben.Wie kann ich den Mindestwert finden und ein Schlüsselwörterbuch eingeben?

Es ist möglich, den Wert mit dem folgenden Code abrufen, aber keine Methode scheint den Schlüsselwert, da seine in Tupel Form wird wieder an der Arbeit

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

Die Top-Stimmen auf die vorgeschlagene doppelte beantworten, http://stackoverflow.com/questions/3282823/get-key-with-the-least-value-from-a-dictionary, funktioniert hier nicht. Dies ist eine 'sparse.dok'-Matrix; Das ist eine Unterklasse des Wörterbuchs. Es hat seine eigene "Get" -Methode. – hpaulj

Antwort

1

min(sparsemin.items(), key=lambda item: (item[1], item[0])) ein Tupel mit dem Minimalwert und seinen Schlüsseln.

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

Oder etwas einfacher, 'min (a, key = a.get)'. (Es wird nur den Schlüssel zurückgeben. Das Erhalten des Wertes, der dem Schlüssel gegeben wird, wird dem Leser als Übung überlassen.) –

+0

Dieses 'a.get' ist die Top-Antwort auf das vermeintliche Duplikat: http://stackoverflow.com/questions/ 3282823/get-key-mit-dem-kleinsten-Wert-aus-einem-Wörterbuch. Es funktioniert in diesem Fall, aber nicht hier. 'IndexError: index muss ein Paar Ganzzahlen sein'. – hpaulj

+0

Dies ist ein spärliches 'dok' Wörterbuch; implementiert als eine Unterklasse des regulären Wörterbuchs. – hpaulj

Verwandte Themen