社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何使用包含节点和边的python dict构建g networkx?

Ramiro Tormenta • 5 年前 • 1476 次点击  

考虑一个元组列表。此列表将转换为字典,其中主关键字是节点和边。

例子:

ls = [('a', 1), ('b', 2), ('c', 3), ('a', 2), ('b', 3)]

为了达到这个结果,我导入了 networkx 图书馆。

import networkx as nx
G = nx.Graph()
G.add_edges_from(ls)

但是,当我转换的时候 G图 node_link_data : nx.readwrite.json_graph.node_link_data(G) 我发现有些项(源和目标)是颠倒的,例如,元组列表中的第二个项被分类为 来源 相反 目标

# original tuple
('b', 2)

# node_link_data
links: [
  {'source': 2, 'target': 'b'}
  ...
]

所以,我创造了我自己的口述 {'nodes': [], 'links': []} .

我想用这个dict创建networkx图。我对使用这个库的算法来测量节点感兴趣。

我尝试使用:

G = nx.Graph(myDict)

这将返回一个错误: TypeError: Input is not known type

如何使用已经包含节点和边的dict构建此图?或者,我可以使用其他库来度量度、集群等。而是使用其他库。提前谢谢

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38170
 
1476 次点击  
文章 [ 1 ]  |  最新文章 5 年前
vash_the_stampede
Reply   •   1 楼
vash_the_stampede    6 年前

因此,问题似乎是有些元组没有正确地组织,无法从列表到字典进行一致的转换,您可以这样做:测试这些元组的索引

ls = [('a', 1), (2, 'b'), (3, 'c'), ('a', 2), ('b', 3)]
links = []
for i in ls:
    try:
        if i[0].isalpha():
            links.append({'source': i[1], 'target': i[0]})
    except AttributeError:
        links.append({'source': i[0], 'target': i[1]})

print(links)
# [{'source': 1, 'target': 'a'}, {'source': 2, 'target': 'b'}, {'source': 3, 'target': 'c'}, {'source': 2, 'target': 'a'}, {'source': 3, 'target': 'b'}]

我们要测试一下 i[0] 如果它的字母至少有一个字符,如果它是,我们将它附加到目标和 i[1] 到来源。另一方面,如果它恰好是 int 将引发一个错误,我们可以使用 try/except 捕捉那个错误,这告诉我们,现在我们的int在 我[ 0 ] 所以我们可以用 我[ 0 ] 作为来源和 我[ 1 ] 作为目标。