将二维数组(邻接表)转换为字典 python
Converting a 2D array (adjacency list) into a dictionary python
我的邻接表是:
Graph = [[3, 4], [3], [3, 4], [0, 1, 2], [0, 2]]
我想得到这个输出:
adjacency_dict = {0: [3, 4],
1: [3],
2: [3, 4],
3: [0, 1, 2],
4: [0, 2]}
我之前尝试过的所有解决方案都让我明白了 "TypeError: unhashable type: 'list'",我从概念上理解了为什么我明白了,但我无法将这种理解转化为实际编写解决方案。我对 Python 比较陌生,所以任何建议都会有所帮助。
试试这个:
adjacency_dict = {i: j for i,j in enumerate(Graph)}
或
adjacency_dict = {i:Graph[i] for i in range(len(Graph))}
从技术上讲,您尝试使用字典获得的结果与列表相同。
例如试试这个
>>>Graph[0][1]
//will print 4
>>>Graph[1][0]
//will print 3
但是如果你真的想用你描述的键将列表转换为字典,可以在下面的代码中完成:
adjacency_dict = {}
for idx, val in enumerate(Graph):
adjacency_dict[idx] = val
虽然听写理解产生相同的结果,但我觉得这个更简洁:
adjacency_dict = dict(enumerate(Graph))
我的邻接表是:
Graph = [[3, 4], [3], [3, 4], [0, 1, 2], [0, 2]]
我想得到这个输出:
adjacency_dict = {0: [3, 4],
1: [3],
2: [3, 4],
3: [0, 1, 2],
4: [0, 2]}
我之前尝试过的所有解决方案都让我明白了 "TypeError: unhashable type: 'list'",我从概念上理解了为什么我明白了,但我无法将这种理解转化为实际编写解决方案。我对 Python 比较陌生,所以任何建议都会有所帮助。
试试这个:
adjacency_dict = {i: j for i,j in enumerate(Graph)}
或
adjacency_dict = {i:Graph[i] for i in range(len(Graph))}
从技术上讲,您尝试使用字典获得的结果与列表相同。
例如试试这个
>>>Graph[0][1]
//will print 4
>>>Graph[1][0]
//will print 3
但是如果你真的想用你描述的键将列表转换为字典,可以在下面的代码中完成:
adjacency_dict = {}
for idx, val in enumerate(Graph):
adjacency_dict[idx] = val
虽然听写理解产生相同的结果,但我觉得这个更简洁:
adjacency_dict = dict(enumerate(Graph))