AttributeError: 'dict' object has no attribute (...) when iterate over a dictionary of sets
AttributeError: 'dict' object has no attribute (...) when iterate over a dictionary of sets
我试图从他的邻接表表示的无向图中删除一个节点,但我收到了一个我无法理解的错误。
ugraph 示例:
g1 = {0: set([1]), 1: set([0, 2]), 2: set([1, 3]), 3: set([2]), 4: {5, 6}, 5: {4}, 6: {}}
我正在创建的函数:
def remove_node(ugraph, node):
"""
:param ugraph: An undirected graph
:param node: The node that we want to remove
:return: The undirected graph minus one node :)
"""
try:
del ugraph[node]
except KeyError:
print "The node is not in the graph"
for key in ugraph.keys():
ugraph[key] = ugraph[key].difference(set([node]))
return ugraph
这是我的错误:
Traceback (most recent call last):
File "/home/juan/PycharmProjects/AlgorithmicThinking_week2/resilence.py", line 46, in <module>
print remove_node(g1, 1)
File "/home/juan/PycharmProjects/AlgorithmicThinking_week2/resilence.py", line 42, in remove_node
ugraph[key] = ugraph[key].difference(set([node]))
AttributeError: 'dict' object has no attribute 'difference'
为什么会这样?
其中一件与另一件不同:
>>> g1 = {0: set([1]), 1: set([0, 2]), 2: set([1, 3]), 3: set([2]), 4: {5, 6}, 5: {4}, 6: {}}
>>> for key in g1:
... print key, g1[key], type(g1[key])
...
0 set([1]) <type 'set'>
1 set([0, 2]) <type 'set'>
2 set([1, 3]) <type 'set'>
3 set([2]) <type 'set'>
4 set([5, 6]) <type 'set'>
5 set([4]) <type 'set'>
6 {} <type 'dict'>
{}
是空字典,不是空集。请改用 set()
。
我试图从他的邻接表表示的无向图中删除一个节点,但我收到了一个我无法理解的错误。
ugraph 示例:
g1 = {0: set([1]), 1: set([0, 2]), 2: set([1, 3]), 3: set([2]), 4: {5, 6}, 5: {4}, 6: {}}
我正在创建的函数:
def remove_node(ugraph, node):
"""
:param ugraph: An undirected graph
:param node: The node that we want to remove
:return: The undirected graph minus one node :)
"""
try:
del ugraph[node]
except KeyError:
print "The node is not in the graph"
for key in ugraph.keys():
ugraph[key] = ugraph[key].difference(set([node]))
return ugraph
这是我的错误:
Traceback (most recent call last):
File "/home/juan/PycharmProjects/AlgorithmicThinking_week2/resilence.py", line 46, in <module>
print remove_node(g1, 1)
File "/home/juan/PycharmProjects/AlgorithmicThinking_week2/resilence.py", line 42, in remove_node
ugraph[key] = ugraph[key].difference(set([node]))
AttributeError: 'dict' object has no attribute 'difference'
为什么会这样?
其中一件与另一件不同:
>>> g1 = {0: set([1]), 1: set([0, 2]), 2: set([1, 3]), 3: set([2]), 4: {5, 6}, 5: {4}, 6: {}}
>>> for key in g1:
... print key, g1[key], type(g1[key])
...
0 set([1]) <type 'set'>
1 set([0, 2]) <type 'set'>
2 set([1, 3]) <type 'set'>
3 set([2]) <type 'set'>
4 set([5, 6]) <type 'set'>
5 set([4]) <type 'set'>
6 {} <type 'dict'>
{}
是空字典,不是空集。请改用 set()
。