Skip to content

Commit b176630

Browse files
committed
Calculate Euclidean distance between dicts.
1 parent 53536d7 commit b176630

File tree

1 file changed

+5
-8
lines changed

1 file changed

+5
-8
lines changed

fontbro/font.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import copy
2-
import itertools
32
import math
43
import os
54
import re
@@ -807,20 +806,18 @@ def get_variable_instance_closest_to_coordinates(self, coordinates):
807806

808807
def get_euclidean_distance(a, b):
809808
# https://en.wikipedia.org/wiki/Euclidean_distance#Higher_dimensions
809+
keys = set(list(a.keys()) + list(b.keys()))
810810
return math.sqrt(
811-
sum(
812-
math.pow(abs(ab[0] - ab[1]), 2)
813-
for ab in list(itertools.zip_longest(a, b, fillvalue=0))
814-
)
811+
sum([math.pow(a.get(key, 0) - b.get(key, 0), 2) for key in keys])
815812
)
816813

817-
lookup_values = coordinates.values()
814+
lookup_values = coordinates
818815
instances = self.get_variable_instances()
819816
closest_instance_distance = sys.maxsize
820817
closest_instance = None
821818
for instance in instances:
822-
instance_values = instance["coordinates"].values()
823-
instance_distance = get_euclidean_distance(lookup_values, instance_values)
819+
instance_values = instance["coordinates"]
820+
instance_distance = get_euclidean_distance(instance_values, lookup_values)
824821
if instance_distance < closest_instance_distance:
825822
closest_instance_distance = instance_distance
826823
closest_instance = instance

0 commit comments

Comments
 (0)