Wali Temuri
Wali Temuri

Reputation: 1

Storing CSV file in dictionary list of tuples. Each key is a date, each tuple contains 3 corresponding fields, multiple entries per key(date) possible

An example to demonstrate my problem, suppose the csv file is formatted like:

2022-11-05,Female,30-39,City of London
2022-11-05,Male,60-69,City of London
2022-11-04,Female,70-79,City of London
2022-11-04,Female,60-69,City of London

Should be read into a dictionary like:

{'2022-11-05': [(Female,30-39, City of London), (Male,60-69,City of London), '2022-11-04': [(Female, 70-79, City of London), (Female, 60-69, City of London)]}

When I attempted to read it like:

vaccine_data_reader = csv.reader(vaccine_date_file)
mydict = {rows[0]: [(rows[1],rows[2],rows[3])] for rows in vaccine_data_reader}

I only got one value per key, not multiple lists of tuples for each unique entry.

Upvotes: 0

Views: 42

Answers (2)

Ulisse Rubizzo
Ulisse Rubizzo

Reputation: 156

A more pythonic way to express the same solution is:

for row in vaccine_data_reader:
    try:
        mydict[row[0]].append(tuple(row[1:]))
    except KeyError:
        mydict[row[0]] = [tuple(row[1:])]

Upvotes: 1

Sam
Sam

Reputation: 731

I don't think Dictionary Comprehension would be the way here, as dictionary does not allow duplicate keys, so it will just replace the existing one.

for rows in vaccine_data_reader:
    if rows[0] in mydict.keys(): #Checks if the keys already exists
        mydict[rows[0]].append(tuple(rows[1:])) #Appends the value of duplicate
        continue
    mydict[rows[0]] = [tuple(rows[1:])] #Creates a new keys and adds the value

Upvotes: 0

Related Questions