You are looking for nested dictionaries. Implement the perl’s autovivification feature in Python (the detailed description is given here). Here is a MWE.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import csv
class AutoVivification(dict):
"""Implementation of perl's autovivification feature."""
def __getitem__(self, item):
try:
return dict.__getitem__(self, item)
except KeyError:
value = self[item] = type(self)()
return value
def main():
d = AutoVivification()
filename="test.csv"
with open(filename, 'r') as f:
reader = csv.reader(f, delimiter=",")
next(reader) # skip the header
for row in reader:
d[row[0]][row[1]] = row[2]
print(d)
#{'1': {'24': '1.5', '16': '4'}, '3': {'150': '3', '110': '4', '165': '3', '161': '4'}, '2': {'32': '4', '50': '4', '47': '4'}}
if __name__ == '__main__':
main()
The content of test.csv
,
userId,movieId,rating
1,16,4
1,24,1.5
2,32,4
2,47,4
2,50,4
3,110,4
3,150,3
3,161,4
3,165,3
1
solved How to convert csv to dictionary of dictionaries in python?