【发布时间】:2018-03-21 13:53:58
【问题描述】:
我有一个Node类定义如下(为了简化,我只复制了相关代码):
class Node(object):
def __init__(self, x, y):
self.x = x
self.y = y
self.neighbours = []
我还有一个字典,其中 Node 对象作为键,键节点的邻居列表作为每个键的值。
successorTable = {
Node(0, 1): [Node(1, 0)],
Node(1, 0): [Node(0, 1)],
# and so on ...
}
现在我想做的是获取最大值为x的字典键(Node对象)和最大值为y的键
所以我基本上是想得到以下结果:
# maxXNode -> Node(1, 0)
# maxYNode -> Node(0, 1)
【问题讨论】:
-
你的 Node 对象有
__hash__特殊方法吗?否则,这将无法按您的意愿工作。 -
为什么需要
successorTable?这不是Node.neighbours的用途吗?也就是说,任何时候你使用successorTable[x],你都可以直接说x.neighbors。 -
后继节点是节点在一个特定方向上的邻居。这就是为什么我需要
successorTable,它是图形的属性,而不是节点的。但是,我会在无向图中使用Node.neighbours。 -
@jdehesa,你的回答给了我一个线索,虽然我不得不修改它。谢谢。这是修改后的版本:
max_key_x = max(successorTable.keys(), key=lambda n: n.y).ymax_key_y = max(successorTable.keys(), key=lambda n: n.x).x
标签: python dictionary attributes key max