当我尝试分配邻居时,我得到一个错误的unhashable类型:‘dict
graphs = networkx.erdos_renyi_graph(10, 0.5)
pos = random.choice(graphs.nodes())
neighbors = graphs.neighbors(pos)
TypeError Traceback (most recent call last)
<ipython-input-97-f39c9dfc00ff> in <module>()
1 graphs = networkx.erdos_renyi_graph(10, 0.5)
2 pos = random.choice(graphs.nodes())
----->3 neighbors = graphs.neighbors(pos)
/usr/local/lib/python3.7/dist-packages/networkx/classes/graph.py
in neighbors(self, n)
1251
1252 try:
-> 1253 return iter(self._adj[n])
1254 except KeyError as e:
1255 raise NetworkXError(f"The node {n} is not in the
graph.") from e
TypeError: unhashable type: 'dict'我该如何解决这个问题?谢谢。
发布于 2021-11-09 19:04:18
我并不熟悉networkx NodeDataView对象(您的graphs.nodes())的所有错综复杂之处,但the documentation中的注释和示例建议您只需转换为list即可访问节点以进行序列类型的操作。
下面的代码对我来说是正常的,没有任何错误。
import networkx
import random
graphs = networkx.erdos_renyi_graph(10, 0.5)
pos = random.choice(list(graphs.nodes))
neighbors = graphs.neighbors(pos)另外,由于变量名pos的另一个典型含义是kwarg which specifies node coordinates for plotting in networkx,因此最好使用另一个变量名以防止混淆。
https://stackoverflow.com/questions/69903445
复制相似问题