我有两个列表。其中一个具有此数据结构:每行的第一个元素是ID,第二个元素是电子邮件地址。
第二个列表是一个“谁给谁写信”的列表,每行的第一个ID号码是发件人,第二个号码是收件人。
然而,我无法看到节点之间的边缘。上述代码生成了下面的图形。使用
['0', 'kvogel@politico.com']
['1','ababab@politico.com']
第二个列表是一个“谁给谁写信”的列表,每行的第一个ID号码是发件人,第二个号码是收件人。
['0', '4']
['0', '6']
['1', '4']
顺便说一下,括号实际上并不是列表的一部分。这是我的Jupyter笔记本输出。第一个列表大约有2000个,第二个列表有40000行。在下面的代码中,我从第一个列表中添加节点(在这种情况下是电子邮件地址),然后循环遍历第二个列表并使用给定的ID创建节点之间的边缘。
first =-1
second =-1
for row in idsList:
g.add_nodes_from(row[1])
for row in dncList:
for i in range (len(idsList)):
if (row[0]==idsList[i][0]):
first=i;
elif(row[1]==idsList[i][0]):
second=i
g.add_edge(idsList[first][1],idsList[second][1])
nx.draw_networkx(g,with_labels = False, node_size = 30)
plt.show()
然而,我无法看到节点之间的边缘。上述代码生成了下面的图形。使用
edges()
打印会给出所有边的列表,因此没有问题。我在这里漏掉了什么?
for i in range (len(idsList)) ...
为什么不这样做呢?for index, id in enumerate(idsList): if id[0] == row[0]: first = index elif id[0] == row[0]: second = index
- Joel