【发布时间】:2016-04-20 01:32:29
【问题描述】:
我有一个来自国家公路规划网络数据库的节点和边对象列表。很多数据对我来说是隐藏的,但这是给我的:
class Node:
def __init__(self, longitude, latitude, state, description):
self.longitude = longitude
self.latitude = latitude
self.state = state
self.description = description
class Link:
"""A bi-directional edge linking two NHPN nodes."""
def __init__ (self, begin, end, description):
"""create a link given its beginning and end (which must be nodes)
and possibly a description string."""
self.begin = begin
self.end = end
self.description = description
我知道没有提供很多信息,但我正在尝试根据这些数据构建邻接列表。我非常想用字典。这是我尝试过的:
for node in nodes:
adj[node] = None
for edge in edges:
adj[node] = (edge.begin, edge.end) #edge.begin and edge.end being node's neighbors
后跟一个打印语句,看看它是否有效。但它从未打印出来,这担心输入量很大,我的代码会非常慢。如何修改我的实施?我非常想使用字典,但我愿意接受所有建议。
【问题讨论】:
-
你必须使用那些类定义吗?字典需要可散列的键,而这些类都不是可散列的。
-
@Robᵩ 如果您指的是节点和链接,是的,很可能是因为我无法想象还有其他方法可以遍历节点和边。如果您的意思是经度/纬度/等和开始/结束,可能不是,但我想不出没有开始/结束的方法
-
NHPN 数据库似乎相当大。我认为@Robᵩ 的问题旨在发现是否可以对数据存储格式进行任何更改。您是否已经将所有这些记录保存在内存中?您是否使用其他人的解析器来解析 XML 文件?另外,邻接列表的预期用例是什么?插入数据库?建地图?解决旅行商问题?
-
@AustinHastings dijskstra 的算法,用于找到从我周围某个区域到远离我的某个区域(例如圣地亚哥)的最短路径
标签: python dijkstra adjacency-list