【发布时间】:2019-04-10 22:42:47
【问题描述】:
如果给我一个字典来表示一个图,其中顶点是键,值是列表,其条目同时包含相邻顶点和两个顶点之间的权重,我如何以递增的顺序返回边列表没有重复?例如,我可能会得到以下字典...:
{"A": [["B",10], ["D",5]], "B": [["A",10], ["C",5]], "C ": [["B",5],["D",15]], "D": [["C",15], ["A",5]]}。
此外,我只允许导入复制库,因此我可以复制一个列表并使用 deepcopy() 创建具有相同元素的新对象。
现在,我正在尝试将字典转换为列表,因为我认为对列表中的元素进行排序并删除重复的边缘可能会更容易。所以目前我有以下内容(图表是字典,在这种情况下是我上面提供的那个)......
def edge_get(graph):
input_list = []
sorted_list = []
for key, value in graph.items():
temp = [key,value]
input_list.append(temp)
print(input_list)
这打印出来了...
[['A', [['B', 10], ['D', 5]]], ['B', [['A', 10], ['C', 5]] ], ['C', [['B', 5], ['D', 15]]], ['D', [['C', 15], ['A', 5]]]]
我想让它输出:
[['A', 'B', 10], ['A', 'D', 5], ['B', 'A', 10], ['B', 'C', 5 ],...
我想如果我能像这样得到它,我可以比较每个列表的第三个元素,在列表中,如果它们相同,检查其他元素是否匹配(相同的边缘)。基于此,我可以将其添加到最终列表中,或者忘记它并继续前进。
对于这个例子,最终目标是:
[['A', 'D'], ['B', 'C'], ['A', 'B'], ['C', 'D']]
【问题讨论】:
标签: python python-3.x list dictionary nested-lists