Python图形表示

时间:2016-04-18 16:56:01

标签: python

如果我有一个有向图,其顶点用{1,2,3,...}表示,它们之间的连接是这样的:(意味着从b到a的有向边表示为< - b)中

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'} 
像这样。 提前谢谢。

1 个答案:

答案 0 :(得分: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} 上的所有操作。所以,如果你想计算学位,

int points = 0;
int goal = 100;
while (goal <= 100) {
   for (int i = 0; i < goal; i++) {
      if (points > 50) {
         i = goal = 101;
      }
   points += i;
   }
}