如何为使用TupleList创建的图添加顶点属性?

1 投票
2 回答
754 浏览
提问于 2025-04-29 00:24

我有一份文档ID的列表:

10.1.1.100.1022 10.1.1.133.7112 10.1.1.52.4809
10.1.1.100.1037 10.1.1.111.3104 10.1.1.14.3331 10.1.1.102.1525 10.1.1.108.8376 10.1.1.102.3750 10.1.1.164.6517 10.1.1.103.5318 10.1.1.100.2602
10.1.1.100.1045 10.1.1.106.5713 10.1.1.14.3960 10.1.1.156.2724
10.1.1.100.1057 10.1.1.111.8464 10.1.1.105.6486 10.1.1.138.784 10.1.1.121.2733
10.1.1.100.1062 10.1.1.13.9919 10.1.1.12.787 10.1.1.33.4425 10.1.1.19.1677 10.1.1.88.3931
10.1.1.100.1098 10.1.1.55.8054 10.1.1.47.3891 10.1.1.47.7464 10.1.1.38.6745 10.1.1.52.168 10.1.1.41.1417
10.1.1.100.1132 10.1.1.116.4594 10.1.1.128.174
10.1.1.100.1153 10.1.1.38.3827 10.1.1.18.7575 10.1.1.56.3738 10.1.1.110.7560 10.1.1.101.9958 10.1.1.28.7411 10.1.1.18.2975
10.1.1.100.1164 10.1.1.39.9796 10.1.1.104.2119 10.1.1.8.7906 10.1.1.131.2434 10.1.1.78.8998 10.1.1.6.6222
10.1.1.100.1196 10.1.1.153.7628 10.1.1.100.8001 10.1.1.31.2802 10.1.1.19.3462 10.1.1.128.9154

第一列是被后面同一行的文档引用的DOCID。

比如第一行 - 10.1.1.133.7112 被 10.1.1.100.1022 和 10.1.1.52.4809 引用,而 10.1.1.52.4809 又引用了 10.1.1.100.1022。

我用python-igraph的TupleList创建了一个图。以下是这个列表:

[('10.1.1.133.7112', '10.1.1.100.1022'), ('10.1.1.52.4809', '10.1.1.100.1022'), ('10.1.1.111.3104', '10.1.1.100.1037'), ('10.1.1.14.3331', '10.1.1.100.1037'), ('10.1.1.102.1525', '10.1.1.100.1037'), ('10.1.1.108.8376', '10.1.1.100.1037'), ('10.1.1.102.3750', '10.1.1.100.1037'), ('10.1.1.164.6517', '10.1.1.100.1037'), ('10.1.1.103.5318', '10.1.1.100.1037'), ('10.1.1.100.2602', '10.1.1.100.1037'), ('10.1.1.106.5713', '10.1.1.100.1045'), ('10.1.1.14.3960', '10.1.1.100.1045'), ('10.1.1.156.2724', '10.1.1.100.1045'), ('10.1.1.111.8464', '10.1.1.100.1057'), ('10.1.1.105.6486', '10.1.1.100.1057'), ('10.1.1.138.784', '10.1.1.100.1057'), ('10.1.1.121.2733', '10.1.1.100.1057'), ('10.1.1.13.9919', '10.1.1.100.1062'), ('10.1.1.12.787', '10.1.1.100.1062'), ('10.1.1.33.4425', '10.1.1.100.1062'), ('10.1.1.19.1677', '10.1.1.100.1062'), ('10.1.1.88.3931', '10.1.1.100.1062'), ('10.1.1.55.8054', '10.1.1.100.1098'), ('10.1.1.47.3891', '10.1.1.100.1098'), ('10.1.1.47.7464', '10.1.1.100.1098'), ('10.1.1.38.6745', '10.1.1.100.1098'), ('10.1.1.52.168', '10.1.1.100.1098'), ('10.1.1.41.1417', '10.1.1.100.1098'), ('10.1.1.116.4594', '10.1.1.100.1132'), ('10.1.1.128.174', '10.1.1.100.1132'), ('10.1.1.38.3827', '10.1.1.100.1153'), ('10.1.1.18.7575', '10.1.1.100.1153'), ('10.1.1.56.3738', '10.1.1.100.1153'), ('10.1.1.110.7560', '10.1.1.100.1153'), ('10.1.1.101.9958', '10.1.1.100.1153'), ('10.1.1.28.7411', '10.1.1.100.1153'), ('10.1.1.18.2975', '10.1.1.100.1153'), ('10.1.1.39.9796', '10.1.1.100.1164'), ('10.1.1.104.2119', '10.1.1.100.1164'), ('10.1.1.8.7906', '10.1.1.100.1164'), ('10.1.1.131.2434', '10.1.1.100.1164'), ('10.1.1.78.8998', '10.1.1.100.1164'), ('10.1.1.6.6222', '10.1.1.100.1164'), ('10.1.1.153.7628', '10.1.1.100.1196'), ('10.1.1.100.8001', '10.1.1.100.1196'), ('10.1.1.31.2802', '10.1.1.100.1196'), ('10.1.1.19.3462', '10.1.1.100.1196'), ('10.1.1.128.9154', '10.1.1.100.1196')]

我该如何给用TupleList创建的顶点添加属性呢?

暂无标签

2 个回答

1

你可以直接在元组里添加属性,使用 edge_attrs 参数:

g =  Graph.TupleList([ ('A','B',1,5),  ('A','C',2,6) , ... ],  edge_attrs=['weight','age'] ) 
1

每个Graph都有一个vs字段,这个字段代表了所有顶点的序列。你可以像使用普通的Python字典一样操作这个字段,来存储一些属性。你可以一次性给所有顶点添加或设置一个属性:

g = Graph.TupleList([...])
g.vs['attribute'] = ['attr1', 'attr2', 'attr3', ...]

或者你也可以单独给每个顶点设置属性:

g.vs[0]['attribute'] = 'attr1'

想了解更多信息,可以查看文档,了解如何设置和获取属性

撰写回答