许多人的数据结构

时间:2013-06-19 01:43:53

标签: python algorithm data-structures

适合表示和处理多对多通信的数据结构 我需要处理2个面向消息流的匹配;其中一个流中的实体可以匹配另一个流中的多个,反之亦然。
插入和检索不会频繁,但是对数据域(“包含”)中是否存在实体的评估将非常频繁。
我对python特别感兴趣 - 但我想它同样适用于任何编程语言 任何指向正确方向的人都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

假设你有两套,a和b。地图中的元素到b中的元素,反之亦然。

您可以使用类似图形的数据结构(邻接列表)

# this maps elements in a to elements in b (elements of a are the keys)
# each element of a maps to several elements of b (as a list)
a2b = {
       'a' : [1,2,3]
      }

# this maps elements in b to elements in a (elements of b are the keys)
# each element of bmaps to several elements of a (as a list)
b2a = {
        1 : ['a'],
        2 : ['a'],
        3 : ['a'],
      }

你基本上有一个列表字典。 'a'在左右方向上映射到1,2,3,而1,2,3在另一个方向上映射到'a'(在本例中)。您可以将元素映射到任意数量的其他元素,反之亦然。

要查找域,您可以使用字典的键。在上面的示例中,您可以执行此操作:

>>> print 1 in b2a
True
>>> print 'a' in b2a
False

要检查您的域中是否有elem(在以下示例中,如果{b}中有elem),您只需执行

elem in b2a

检查元素是否在一个集合内部非常快,这就是你想要的。