如果我想通过id顶点得到名字,我可以使用这个功能:VAS(g, "name",id)
但是如果我想以相反的方式,通过名称获得id,我该怎么做?如何按名称获取id顶点?
回答
的igraph不提供,就其本身而言手段,以按名称查找顶点,并有很好的理由 - 从名称到ID映射是一个更具挑战性的问题,不是从ID来命名,这是映射一个简单的数组查找操作。您可以遍历所有顶点并停止在匹配的顶点,但对于大图(顶点数O(n)),这是无效的。更快的方法是使用某种关联数组数据结构,例如@ Jasc答案中的dict
,并将名称用作键和ID作为值。 (如果你改变它,你需要保持这个索引与图形同步。)C自己或者标准C库没有提供这样的数据结构,但是有很多实现可用,例如发现的GHash structure巧舌如簧。
+1;这正是我作为igraph作者之一写的内容。我只补充说可以替换igraph的默认属性处理程序,因此OP理论上可以扩展igraph的默认属性处理机制,以便它自动维护名称到ID的反向映射。但是这不是在核心库中实现的。 –
好的,非常感谢您的意见,我会尝试 – user1310873
我在igrah网站或邮件列表中发现了以下内容。
g = igraph.Graph(0, directed=True)
g.add_vertices(2)
g.vs[0]["name"] = "Bob"
g.vs[1]["name"] = "Bill"
# build a dict for all vertices to lookup ids by name
name2id = dict((v, k) for k, v in enumerate(g.vs["name"]))
# access specific vertices like this:
id_bob = name2id["Bob"]
print(g.vs[id_bob]["name"])
这看起来像Python,它看起来不错,但原始海报标记了问题“C”或“C++” – gcbenison
- 1. 如何从R和Igraph中的名称顶点获取id顶点?
- 2. 如何按名称获取节点?
- 3. 获取顶点包前缀名称?
- 4. 如何获取Node的id名称?
- 5. 按名称获取
- 6. 按名称获取
- 7. 按名称获取
- 8. 如何在微调器中按名称获取ID?
- 9. 如何在SurveyMonkey中按名称获取调查ID
- 10. Javascript,获取点击按钮的名称
- 11. 按ID分组并按病例名称获取姓名?
- 12. 如何在点击图层时获取featureGroup的名称/ ID
- 13. 如何获取按钮点击行ID?
- 14. 如何按名称获取ODBC连接?
- 15. 如何按名称获取QListWidget项目?
- 16. 如何按名称获取数据库?
- 17. 如何按名称获取文件夹?
- 18. 如何获取节点的名称?
- 19. 如何获得密钥名称id Id
- 20. 按名称提取节点
- 21. 如何通过xpath按名称获取根或指定节点?
- 22. jQuery按类名获取ID
- 23. 获取用户名按ID
- 24. Meshlab - 获取选定顶点的ID
- 25. NodeJs/Express获取ID //按下提交按钮的名称
- 26. 按名称获取表格
- 27. @Bean不按名称获取
- 28. SpreadsheetGear按名称获取列?
- 29. 按名称获取资源
- 30. 按名称获取EventHandler?
我从来没有使用过'igraph',但是因为没有其他人回答过:在对文档进行快速检查之后,我认为我正确地说'VAS'在查找顶点的属性图形。如果你的问题是如何找到具有指定属性的特定值的顶点(或顶点)的ID,那么我想你可以遍历图中的所有顶点,检查属性并累积匹配的顶点列表准则。 –