簡短的問題是,有沒有一個關於從python集合中創建圖形的自我函數? 更長的問題:我有幾個python集。它們各自重疊或者一些是其他的子集。我想做一個圖(如在節點和邊)節點是集中的元素。這些邊是這些集合的交集,這些集合由這些集合的交集中的元素的數量加權。有幾個python圖形包。 (NetworkX,igraph,...)我不熟悉它們中的任何一個的用法。他們中的任何一個都會從一組列表中直接創建一個圖形,即MakeGraphfromSets(alistofsets) 如果不是你知道如何獲取集合列表來定義邊緣的例子。它實際上看起來可能是直線前進,但一個例子總是很好。python集合類型的構造圖
0
A
回答
1
這不是太難自己的代碼:
def intersection_graph(sets):
adjacency_list = {}
for i, s1 in enumerate(sets):
for j, s2 in enumerate(sets):
if j == i:
continue
try:
lst = adjacency_list[i]
except KeyError:
adjacency_list[i] = lst = []
weight = len(s1.intersection(s2))
lst.append((j, weight))
return adjacency_list
此功能的數字各設置有它內sets
指數。我們這樣做是因爲字典鍵必須是不可變的,這是整數但不是集合。
這裏有一個如何使用這個功能的例子,它的輸出:
>>> sets = [set([1,2,3]), set([2,3,4]), set([4,2])]
>>> intersection_graph(sets)
{0: [(1, 2), (2, 1)], 1: [(0, 2), (2, 2)], 2: [(0, 1), (1, 2)]}
1
def MakeGraphfromSets(sets):
egs = []
l = len(sets)
for i in range(l):
for j in range(i,l):
w = sets[i].intersection(sets[j])
egs.append((i,j,len(w)))
return egs
# (source set index,destination set index,length of intersection)
sets = [set([1,2,3]), set([2,3,4]), set([4,2])]
edges = MakeGraphfromSets(sets)
for e in edges:
print e
OUTPUT:
(0, 0, 3)
(0, 1, 2)
(0, 2, 1)
(1, 1, 3)
(1, 2, 2)
(2, 2, 2)
相關問題
- 1. 構造集合
- 2. 我如何使用泛型類型來構造集合?
- 3. 使用反射獲得構造的子類型類型的集合
- 4. Python靜態類型的構造函數?
- 5. 打字稿:聯合構造類型
- 6. 如何調用類的構造泛型類型的構造
- 7. 模板異構類型的集合
- 8. Python - 只有一種類型的集合
- 9. Python構建了混合類型的JSON
- 10. 構造泛型類型
- 11. Python類型鑄造
- 12. 在模型或集合構造函數中存儲模型或集合特定的視圖
- 13. 類型的對象構造
- 14. C#ITypeResolutionService的構造類型
- 15. 什麼是創建Java集合的構造函數的類型的目的?
- 16. 在python中構造類屬性時訪問類的類型?
- 17. python集合類型無法排序
- 18. 圖像類和位圖類型的構造函數?
- 19. 集合的通用類型子集合
- 20. 類型...不是構造函數類型
- 21. 鑄造結構構件的類型
- 22. Python類和集合
- 23. 包含元素和其他集合用於構造C++的集合的集合
- 24. 構造一個類型
- 25. 接口類型構造
- 26. 構造連續類型?
- 27. JavaScript構造參數類型
- 28. typecript中的類構造函數類型?
- 29. C# - 構造類類型的對象
- 30. 帶集合的模型類的強類型視圖
目前還不清楚你的套集介紹。是一組連接節點的集合嗎?如果不是,如何編碼邊緣?一個例子將有助於回答你的問題。 – msw 2010-03-19 05:49:56
一張圖片勝過1000字。要麼給我們其他868字或某種例子:) – 2010-03-19 06:01:38
你能清理你的語法和拼寫嗎?你的問題的第一部分幾乎是不可讀的。 – allyourcode 2010-03-19 06:05:02