做一个圆锥的邻居列表

2024-06-17 15:07:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个锥体间连接的嵌套列表

a = [0,1]
b = [2,4]
c = [2,0]
d = [4,3]
e = [6,3]

f=[a,b,c,d,e]

我想写一个程序,列出锥0的每个邻居,锥1的每个邻居。。。我希望输出是

[[1,2],[0],[0,4],[4,6],[2,3],[],[3]]

注意,圆锥5是空的,因为它没有邻居

我的课程如下:

 neighbour_list = {}

 for x, y in e:
   neighbour_list.setdefault(x, [])
   neighbour_list[x].append(y)
   neighbour_list.setdefault(y, [])
   neighbour_list[y].append(x)
 neighbour_list = list(neighbour_list.values())
 print(neighbour_list)

然而,输出并不打印cone 5的邻居,它只是跳过它:

 [[1, 2], [0], [4, 0], [4, 6], [2, 3], [3]]

我如何才能让它打印一个空的清单锥5

谢谢


Tags: in程序列表forlist课程valuesprint
1条回答
网友
1楼 · 发布于 2024-06-17 15:07:58

如果我正确理解了您的问题,那么您在一个图中有一个边列表(圆锥体交点),并且您正在尝试查找每个图顶点(圆锥体本身)的邻居列表。问题是有些顶点没有边,因此它们不会出现在列表中

解决这个问题的最好方法是建立一个不同于用邻居列表创建的字典的列表。而不仅仅是将{{CD1}}转换成一个列表,您还需要通过您想考虑的特定顶点键对其进行迭代。这样,您将为任何没有任何边的值获得一个默认值(并且您将以定义良好的顺序获得它们,而不是从dict数据结构中获得的任意(尽管倾向于顺序,对于整数键)顺序

试着让你的下一行变成:

neighbor_list = [neighbor_list.get(x, []) for x in range(7)]

根据需要调整range参数以覆盖需要考虑的顶点。另外,考虑使用来自collections模块的defaultdict,它将自动为您构建列表,而不是与dict.setdefaultdict.get混在一起

相关问题 更多 >