如何对NetworkX Graph的节点进行不区分大小写排序?
解决NetworkX节点不区分大小写排序的报错问题
你遇到的报错原因很明确:G.nodes(data=True)返回的是**(节点名称, 属性字典)**的元组列表,直接用str.lower作为排序key会触发类型错误——str.lower只能处理字符串,无法作用于元组对象。
要实现不区分大小写排序,只需在key参数里指定取元组中的节点名称部分转小写即可,修改后的代码如下:
H = nx.Graph() # 以元组第一个元素(节点名)的小写形式作为排序依据 H.add_nodes_from(sorted(G.nodes(data=True), key=lambda x: x[0].lower())) H.add_edges_from(G.edges(data=True))
如果你的节点名称存在非字符串类型(比如数字),可以先转成字符串再处理,避免额外类型错误:
H.add_nodes_from(sorted(G.nodes(data=True), key=lambda x: str(x[0]).lower()))
内容的提问来源于stack exchange,提问作者Chras
相关产品推荐
相关产品推荐

