python - Networkx 不可散列类型:'dict'
问题描述
尝试分配邻居时出现错误 unhashable type: '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'
我怎么解决这个问题?谢谢。
解决方案
我不熟悉 networkxNodeDataView
对象(您的)的所有复杂性,但文档graphs.nodes()
中的注释和示例建议简单地转换为 a以访问节点以进行序列类型操作。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,它指定用于在 networkx 中绘制的节点坐标,因此最好使用另一个变量名称来防止混淆。
推荐阅读
- angular - 使配置文件在 staging\prod 环境中可编辑
- javascript - 在 Node Js 中处理动态数量的 Promise
- python - Pandas中爆炸的动态版本?
- javascript - 解构不可迭代实例的无效尝试
- vba - VB中的重复搜索(Word)
- javascript - PDF javascript突出显示过期日期
- java - 在spring boot中将@Value注入@PropertySource
- java - 如何将弹性搜索查询更改为 Java API?
- azure-analysis-services - Analysis Services 访问配置挑战
- php - 我想使用一个 API,用户输入他的专业 ID 并自动填写,但我在 Laravel 未定义数组键 1 中有问题