'Using an indexed list as a value in data dictionary

I'm new to Python and trying to build a data dictionary from a csv. I don't have a lot of flexibility to change the csv. I'm not sure if it would be easier (or even possible) to use a list as a value in a data dictionary, and then access a specific value in that list with some kind of index, or if I should import the data to have an additional key with only a float as the value.

Here's a sample of the structure in a csv:

Tester = [[1, 1, 3, 1, 10, 5, 10],
          [1, 2, 3, 7, 5, 3, 8  ],
          [1, 4, 5, 9, 7, 2, 8  ],
          [2, 1, 2, 0, 0, 0, 0  ],
          [2, 3, 5, 6, 4, 3, 2  ],
          [2, 5, 6, 7, 10, 4, 4 ],]

I'm not sure how to produce this dictionary, with four keys:

(1, 1, 3, 1) = 1
(1, 1, 3, 2) = 10
(1, 1, 3, 3) = 5
(1, 1, 3, 4) = 10
(1, 2, 3, 1) = 7
(1, 2, 3, 2) = 5
(1, 2, 3, 3) = 3
(1, 2, 3, 4) = 8
(1, 4, 5, 1) = 9
(1, 4, 5, 2) = 7 
... 

Currently, I'm instead using a list as the value and getting the following output. I could leave the output as is, but then I'm getting a value error. Or, I could try to produce the output above, but I'm not sure how to do that. What this actually represents mathematically is a variable with four subscripts, so I'm not sure what the best practice would be here.

# Import libraries
from gurobipy import *
import csv
from math import *
import numpy as np
from random import *
import time

# arc capacity
capacityatest = open('C:/Users/Emma/Documents/2021-2022/Thesis/Data/tester.csv', 'r')
csv_capacityatest = csv.reader(capacityatest)
mydict_capacityatest = {}
for row in csv_capacityatest:
        mydict_capacityatest[(row[0], row[1],row[2])] = list(row[3:7])
print(mydict_capacityatest)

arc, capacityatest = multidict(mydict_capacityatest)

{('1', '1', '3'): ['1', '10', '5', '10'], ('1', '2', '3'): ['7', '5', '3', '8'], ('1', '4', '5'): ['9', '7', '2', '8'], ('1', '7', '10'): ['9', '9', '4', '5'], ('1', '11', '12'): ['3', '4', '4', '7'], ('2', '1', '2'): ['0', '0', '0', '0'], ('2', '3', '5'): ['6', '4', '3', '2'], ('2', '5', '6'): ['7', '10', '4', '4'], ('2', '9', '10'): ['3', '2', '1', '7']}
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-10-b7e72ced1492> in <module>
     15 print(mydict_capacityatest)
     16 
---> 17 arc, capacityatest = multidict(mydict_capacityatest)

ValueError: too many values to unpack (expected 2)


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source