Hej,
mam słownik w takiej postaci:
slownik = {1: {2:3, 3:4, 5:6}, 2: {1:3, 3:4, 5:6}, 3: {1:4, 2:4, 5:6}, ...}
itd ... czyli tak jakby:
przejście koszt
1 -> 2 = 3
1 -> 3 = 4
1 -> 5 = 6
i mam ten słownik wpisać do tablicy, w taki sposób:
tablica[1][2] = 3
tablica[1][3] = 4
tablica[1][5] = 6
ale jeśli wpisałem wartość do tablica[1][2], to nie wpisuję już jej
w tablica [2][1], tylko zostawiam pustę (domyślnie wypełniłbym tablicę sys.maxsize)
Jak to zrobić?
Slownik i podsłowniki mam w pliku:
5 - ile elem w podstawowym słowniku
1 - który element (klucz) słownika
3 - ile kluczy ma podsłownik
3 1 - pary (klucz, wartość)
4 1
5 1
...
Mój plik cały:
5
1
3
3 1
4 1
5 1
2
2
4 1
5 1
3
3
1 1
4 1
5 1
4
4
1 1
2 1
3 1
5 1
5
4
1 1
2 1
3 1
4 1
Mój kod (czyta ze słownika i wpisuje odpowiednio, ale nie wiem, jak wpisać to do tablicy, w sposób, który opisałem:)
# -*- coding: utf-8 -*-
#!/usr/bin/env python
from numpy import zeros
import sys
"""
Reprezentacja slownika:
slownik = {1: {2:4, 3:5}, 2: {3:4}, 3: {1:5, 2:4}}
"""
slownik = {}
filename = input("Plik z danymi (nazwa): ")
try :
with open(filename, 'r') as file :
N = int(file.readline().rstrip("\n"))
for i in range(0, N) :
num = int(file.readline().rstrip("\n"))
M = int(file.readline().rstrip("\n"))
podslownik = {}
for j in range(0, M) :
sasiad, koszt = file.readline().rstrip("\n").split()
podslownik[int(sasiad)] = int(koszt)
slownik[int(num)] = podslownik
except IOError :
print("Błąd we/wy. (Brak pliku)")
if len(slownik) != 0 :
tablica = zeros((N,N), float)
tablica.fill(sys.maxsize)
for i in range (0, N) :
tablica[i][i] = 0
#przepisanie slownika do tablicy ...