1
什麼數據結構適合於表示和處理多對多的對應關係。
我需要處理兩個面向消息流的匹配;一個流中的實體可以與另一個流中的多個匹配,反之亦然。
插入和檢索不會很頻繁,但是評估一個實體是否存在於數據域(「包含」)中是相當頻繁的。
我特別感興趣的python - 但我想它同樣適用於任何編程語言。
任何正確方向的指針表示讚賞。許多數據結構
什麼數據結構適合於表示和處理多對多的對應關係。
我需要處理兩個面向消息流的匹配;一個流中的實體可以與另一個流中的多個匹配,反之亦然。
插入和檢索不會很頻繁,但是評估一個實體是否存在於數據域(「包含」)中是相當頻繁的。
我特別感興趣的python - 但我想它同樣適用於任何編程語言。
任何正確方向的指針表示讚賞。許多數據結構
假設你有兩套,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,並且所有映射到另一個方向上的'a'(在本例中)。您可以將元素映射到任意數量的其他元素,反之亦然。
要查找域,可以使用字典的鍵。在上面的例子中,你可以這樣做:
>>> print 1 in b2a
True
>>> print 'a' in b2a
False
要檢查是否elem
是您的域(在下面的例子中,如果elem
是集B),你只是做
elem in b2a
察看一個元素在一個集合裏面非常快,這就是你想要的。
'1在b2a'已經很好了,不要打擾建立一套。 – liori
+1謝謝!這樣更好,我喜歡它! – jh314