具有可变键的查找表

时间:2015-02-26 12:08:23

标签: python graph

我正在解决一个搜索问题,图表的节点自然会被嵌套列表标记。我想使用我需要将成本函数与每个节点相关联的方法(例如统一成本)。

我的直觉是使用带有节点标签(=嵌套列表)的查找表作为键,从而产生每个键的成本函数值列表。我理解为什么像列表这样不可用的对象不能用作dicts中的键,例如Lookup table for unhashable in Python。但是节点标签应该是可变的 - 当我计算节点的邻居时,这是通过节点标签上的操作来完成的。

或者,我可以使用属性作为节点标签创建Node类。但是,我没有一组最初定义的节点 - 它在搜索期间会增长。所以我需要继续从节点列表中提取节点标签列表。

现在我倾向于将节点标签从可变类型转换为不可变类型,以便我可以(1)从其标签计算节点的邻居,以及(2)使用节点标签作为dict键。但这感觉很脏。还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

虽然有点难以理解你的问题(一个简单的图形的具体例子会很好),但似乎你正在混淆三个可能不同的概念:节点身份,节点标签< / em>和节点邻接矩阵/列表。无论是在头脑中还是在代码中混合使用都可能会导致不良结果。

  

或者,我可以创建一个Node类,其属性是节点标签。

这可能是一个好主意,可以帮助你分开这些。

  

但是,我没有一组最初定义的节点 - 它在搜索期间会增长。所以我需要继续从节点列表中提取节点标签列表。

我看不出有充分的理由说明为什么你不能在需要时创建新节点并为它们分配邻接列表(或更新邻接矩阵)。

您可能想要查看a existing implementation with this class structure