提取最小值节点

Extract min value node

我有以下 class:

class Node:  
    def __init__(self, node, value, left=None, right=None):
        self.node = node    
        self.value = value  
        self.left = left    
        self.right = right  
        self.code = ''      

我有一个节点列表。问题是,如何提取具有最低 self.value 属性的节点?[​​=12=]

您可以使用带有匿名函数的内置 min 函数来访问值参数:

min(listNodes, key=lambda x: x.value)

或者你可以在Node中定义丰富的比较方法__lt____eq__(你可以定义额外的丰富比较方法,但这两个足以满足[=13这样的排序=]):

class Node:def __init__(self, node, value, left=None, right=None):
        self.node = node    
        self.value = value  
        self.left = left    
        self.right = right  
        self.code = '' 
 
    def __iter__(self):
        return self

    def __lt__(self, other):
        return self.value < other.value
    
    def __eq__(self, other):
        return self.value == other.value

这将允许 min 直接比较找到最小值的节点!

min(listNodes)

在 Python3 之前,可以使用现已弃用的 __cmp__ 方法一次创建所有丰富的比较方法;见 Question About This and Linked Official Notes