2016-04-18 69 views
0

如果我有一個有向圖,其頂點由{1,2,3,...}表示並且它們之間的連接是這樣的:(意味着存在從b到a的有向邊,表示爲一個< -b)Python圖形表示

List1: 1<-2<-3<-4<-5<-6 
List2: 2<-4<-7<-6 
List3: 1<-8<-7 
List4: 1<-9<-2 

頂點4度是2(因爲它具有邊緣3和2),6度爲2,依此類推。我該如何計算並將其存儲在Python中的字典中,如下所示:

dict = {} 
dict{4:'2', 6:'2'} 

這樣子。 在此先感謝。

+0

你的實際輸入是什麼樣的? –

+0

我的輸入如下所示:words [] = ['4777','2516','4637','1221','38803','56203']。每個元素通過有向邊連接到其前一個元素。 – Nikhil

+0

那個輸入中'7'的程度是多少?鑑於'4777'和'4637',它是'4'還是'2'? –

回答

0

嘗試以下,

l1 = [1, 2, 3, 4, 5, 6] 
l2 = [2, 4, 7, 6] 
l3 = [1,8,7] 
l4 = [1, 9, 2] 

from collections import defaultdict 
d = defaultdict(list) 

for l in [l1, l2, l3, l4]: 
    for i,n in enumerate(l): 
     if i: 
      d[n].append(l[i-1]) 
In [144]: d 
Out[144]: 
defaultdict(list, 
     {2: [1, 9], 
     3: [2], 
     4: [3, 2], 
     5: [4], 
     6: [5, 7], 
     7: [4, 8], 
     8: [1], 
     9: [1]}) 

你可以做所有的操作上defaultdict,你可以dict。所以,如果你想計算度,

degree = {k: len(v) for k,v in d.items()} 
In [146]: degree 
Out[146]: {2: 2, 3: 1, 4: 2, 5: 1, 6: 2, 7: 2, 8: 1, 9: 1} 
+0

嘿144和146在這裏?我很抱歉,我對這個概念不熟悉 – Nikhil

+0

@Nikhil它們是終端提示的一部分。不是代碼的一部分。 –

+0

@Nikhil你將有'>>>'類型'>>> d'或'>>>度' –