ich als so ein Wörterbuch haben:nächste Wertepaar in Python Liste finden
d = {'ID_1':[(10, 20), (40, 60), (125, 200)], 'ID_2': [(75, 100), (250, 300)]}
und eine Position und ID:
pos = 70
IDed = ID_1
output = (40, 60)
pos = 90
IDed = ID_2
expected output = (75, 100)
pos = 39
IDed = ID_1
expected output = (40, 60)
Ich möchte den Wert-Paar in der Liste finden, das ist am nächsten zum Test pos
.
Ich habe dies unten versucht:
if IDed in d:
y = d[IDed]
closest = min(y, key=lambda x:abs(x-pos))
Das funktioniert nicht, weil sie mit einzelnen Werten keine Liste ist. Gibt es einen anderen Weg, dies mit einer ähnlichen Methode zu tun. Wenn nicht, kann ich das Problem durch eine Indexierung durch die Liste und die Berechnung der Entfernung zwischen jedem Wertepaar um ein Vielfaches herausfinden. Ich denke jedoch nicht, dass dies sehr effizient wäre.
Sie ein bisschen genauer auf das, was * Nähe sein * ist. Wäre das Tupel immer noch am nächsten bei seinen Items wo '(69, 100000000)'? –
@ Ev.Kounis ja, das wäre am nächsten. Ich füge weitere Beispiele hinzu – interstellar
Was ist, wenn es ein Paar '(60,69)' und ein anderes '(50,90)' gibt? –