从边缘列表创建邻居列表(Python:使用指定的第一个值访问元组)

破产的

使用NetworkX,我获得了描述图中边(成对的顶点)的元组列表:

G = [(1, 2), (1, 3), (1, 4), (2, 4), (3, 8), (4, 5), (8, 15), (5, 6), (5, 7), (6, 17), (7, 11), (7, 15), (7, 16), (17, 12), (11, 12), (11, 13), (15, 9), (15, 10), (16, 9), (9, 18), (18, 13), (18, 14), (10, 14)]

使用此列表,我想遍历每个顶点,并找到每个相邻的顶点,但是我想按顺序进行。因此,我想得到的是例如一个嵌套列表,其中的ith子列表包含每个顶点的邻居i

Neighbors = [[2, 3, 4], [1, 4], [1, 8], [1, 2, 5], [4, 6, 7], [5, 17], [5, 11, 15, 16], [3, 15], [15, 16, 18], [14, 15], [7, 12, 13], [11, 17], [11, 18], [10, 18], [7, 8, 9, 10], [7, 9], [6, 12], [9, 13, 14]]

,但也可以是另一种排序的数据结构。

但是,由于我的图形可能包含一百万个边和顶点,因此我想实现一个例程,该例程不会在每个顶点上遍历整个列表,因为我想将运行时间保持在较低水平。

有什么方法可以做到这一点?很感谢任何形式的帮助。

智慧

您可以使用defaultdict,如下所示:

from collections import defaultdict
d = defaultdict(set)

for x, y in G:
    d[x].add(y)
    d[y].add(x)

d
defaultdict(set,
            {1: {2, 3, 4},
             2: {1, 4},
             3: {1, 8},
             4: {1, 2, 5},
             5: {4, 6, 7},
             6: {5, 17},
             7: {5, 11, 15, 16},
             8: {3, 15},
             9: {15, 16, 18},
             10: {14, 15},
             11: {7, 12, 13},
             12: {11, 17},
             13: {11, 18},
             14: {10, 18},
             15: {7, 8, 9, 10},
             16: {7, 9},
             17: {6, 12},
             18: {9, 13, 14}})

您可以将字典转换为列表:

[sorted(d[k]) for k in range(1, max(d.keys())+1)]
[[2, 3, 4],
 [1, 4],
 [1, 8],
 [1, 2, 5],
 [4, 6, 7],
 [5, 17],
 [5, 11, 15, 16],
 [3, 15],
 [15, 16, 18],
 [14, 15],
 [7, 12, 13],
 [11, 17],
 [11, 18],
 [10, 18],
 [7, 8, 9, 10],
 [7, 9],
 [6, 12],
 [9, 13, 14]]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何基于第一个值Python替换元组排序列表中的元组

如何在python中的每个列表/元组中修改第一个值?

如何访问列表中的第一个值?

访问元组列表中元组第一个元素的范围

在元组的第一个索引中找到值不相同的元组列表的索引

从列表创建一个新的列表,其中包含第一个明确的值

在元组列表上使用二等分,但仅使用第一个值进行比较

按元组的第一个元素分组列表

在列表中删除元组的第一个元素

获取元组列表的第一个元素

元组列表到元组 C# 列表中的第一个元素列表

根据第一个元素从元组列表创建字典

获取由元组列表的第一个值组成的数组

在Django模板中的元组列表的第一个元素中访问元组的第三项

链接列表仅打印第一个列表的第一个值

python json删除第一个元素列表或元组

获取Python列表中每个元组的第一个元素

Python从列表中删除元组的第一个元素

如何使用每个元组的第一个值作为键将六个元组列表连接到 Pandas 数据框中?

根据元组列表创建一个列表(值,索引)

3d阵列R中的n个第一个邻居的列表

从第一个值的唯一值创建嵌套列表

如何从仅匹配 Haskell 中元组的第一个值的元组列表中删除元素

Python字典获得元组的第一个值

如何访问嵌套列表的第一个元素?

拼接Python列表时,如何指定要创建的列表,包括指定的第一个元素之后的所有元素?

按python中每个列表中的第一个值合并嵌套列表

使用.GroupBy删除列表重复项,并保留第一个列表中的值

ReactJS使用Ajax根据第一个下拉列表选择的值填充下拉列表