Я реализую класс графа и хотел бы написать функцию, которая вычисляет степень заданной вершины. Я получаю ошибку типа в своей функции степени, потому что я хотел бы использовать .count для подсчета количества экземпляров вершины v.
Мой график представлен как {a: {b: c}}
где a и b - вершины, соединенные друг с другом, а c - вес ребра
Дано:
{0: {1: 5, 2: 5}, 2: {3: 5}, 1: {3: 5}, 4: {1: 5, 3: 5}}
Вершина 1 имеет степень 3, потому что она связана с вершинами 0,3 и 4.
Мой класс:
class Graph:
def __init__(self, n):
"""
Constructor
:param n: Number of vertices
"""
self.order = n
self.size = 0
self.vertex = {}
def insert_edge(self, u, v, w): #works fine
if u in self.vertex and v < self.order:
if not v in self.vertex[u]:
self.vertex[u][v] = w
self.size += 1
elif u not in self.vertex and u < self.order and v < self.order:
self.vertex[u] = {}
self.vertex[u][v] = w
self.size += 1
else:
raise IndexError
def degree(self, v):
adj_vertices = self.vertex[v]
degree = len(adj_vertices) + adj_vertices.count(v) #ERROR in .count
return degree
Основная функция:
def main():
g = Graph(5)
g.insert_edge(0,1,5)
g.insert_edge(0,2,5)
g.insert_edge(2,3,5)
g.insert_edge(1,3,5)
g.insert_edge(4,1,5)
g.insert_edge(4,3,5)
print(g.vertex) #print the graph
print(g.degree(1)) #error, should print out 3
if __name__ == '__main__':
main()
Моя ошибка:
AttributeError: 'dict' object has no attribute 'count'