给我的比较函数作为参数相对点



i有一个图形类,该类别具有2D网格上的节点。我想使用比较函数与称为end的相对点(称为end)进行分类。我希望能够比较该功能内部,但是我正在努力了解如何将相对点传递到比较函数。

我的代码:

class Graph:
  def __init__(self, end):
    self.nodes = set()
    self.edges = defaultdict(list)
    self.distances = {}
    self.end = end
  def add_node(self, value):
    self.nodes.add(value)
  def add_edge(self, from_node, to_node, distance):
    self.edges[from_node].append(to_node)
    self.edges[to_node].append(from_node)
    self.distances[(from_node, to_node)] = distance
  def compare(node1, node2):
      d1 = findDist(end, node1)
      d2 = findDist(end, node2)
      if d1 < d2:
          return -1
      elif d1 > d2:
          return 1
      else:
        return 0
  def sortPoints(self):
        sorted(self.edges, key=self.compare)

因此,比较函数通常获得2个参数,并且内置的分类函数知道如何使用它。我以为将相对点作为班级成员,但我再也找不到给我比较函数的方法并访问它的方法。

有什么好方法可以实现此目标?

,因为您想将findDist的返回值用作键,您可以使findDist成为Graph的方法。然后,您可以将其作为key参数传递给排序:sorted(self.edges, self.findDist)。这是一个简单的示例,说明它的工作方式:

class Graph:
    def __init__(self, end):
        self.end = end
    def find_dist(self, x):
        return abs(self.end - x)
    def sort_values(self, it):
        return sorted(it, key=self.find_dist)
g = Graph(10)
print(g.sort_values(range(5, 15)))

输出:

[10, 9, 11, 8, 12, 7, 13, 6, 14, 5]

相关内容

  • 没有找到相关文章

最新更新