graph = {
'A': {'B': 8, 'C': 1, 'D': 2},
'B': {},
'C': {'B': 5, 'D': 2},
'D': {'E': 3, 'F': 5},
'E': {'F': 1},
'F': {'A': 5}
}
파이썬으로 다익스트라 알고리즘을 구현하는 코드를 봤는데, 딕셔너리를 중첩해서 쓰고 있다.
여기서는 미리 그래프를 작성해두었지만, 알고리즘 문제를 풀다 보면 그래프를 입력 받아야 하는 경우가 많다.
그 경우에 입력 받는 법이 헷갈려서 작성한다.
{0: {}, 1: {}, 2: {}, 3: {}, 4: {}, 5: {}}
key 값을 range(0, n)으로 하는 중첩 딕셔너리이다. 생성하는 코드는 다음과 같다.
graph = {}
for i in range(n+1):
graph[i] = {}
{0: {}, 1: {2: 2, 3: 3, 4: 1, 5: 10}, 2: {4: 2}, 3: {4: 1, 5: 1}, 4: {5: 3}}
위에서 초기화한 딕셔너리를 이렇게 대입해주려고 한다. 다익스트라 알고리즘에서 시작한 게시물 이므로 한 줄에 주어지는 입력은 다음과 같다.
start는 바깥 dict의 key가 될 녀석. end는 안쪽 dict의 key가 되고, cost가 안쪽 dict의 value가 된다.
for _ in range(m):
start, end, cost = map(int, input().split())
graph[start][end] = cost
위 코드에서는 한줄씩 입력을 받으며 딕셔너리에 추가했다.
다차원 배열과 비슷하게 생각하되, 인덱스 값이 range(0, n)이 아니라 key 이다. 이렇게 나름대로 정리해보았다. ㅎㅎ