我想解决的问题是,我有路由表
这可以优化为
它可以进一步优化为
我想用三维表示法来解决这个问题,但是再一次的检索会很复杂。我需要使用最好的数据结构来解决这个用例。
发布于 2016-04-26 22:23:31
数据结构是一组dest值,其中第一组由src值键控,第二组由port值键控。这将dest值按src和port分组。
src => port => [dest]在python中,这可以通过字典来完成:
table = (
('a','b','p1'),
('a','b','p2'),
('a','b','p3'),
('a','c','p1'),
('a','d','p2'),
('a','e','p3'),
)
optimized = {}
for route in table:
src, dest, port = route
o = optimized.get(src, {})
p = o.get(port, [])
p.append(dest)
o[port] = p
optimized[src] = o
for src,route in optimized.iteritems():
for port,dest in route.iteritems():
print src, dest, port结果(按未排序的顺序排列)是:
a ['b', 'd'] p2
a ['b', 'e'] p3
a ['b', 'c'] p1查找可以使用以下方法完成:
dest = optimized[src][port]https://stackoverflow.com/questions/36841680
复制相似问题