Cree una lista de diccionarios en un diccionario de csv en Python

Tengo un csv que se parece a esto:

Name;Category;Address McFood;Fast Food;Street 1 BurgerEmperor;Fast Food;Way 1 BlueFrenchHorn;French;Street 12 PetesPizza;Italian;whatever SubZero;Fast Food;Highway 6 

y quiero hacer un diccionario con la categoría como claves y una lista de diccionarios con los datos restantes como valores. Así se verá así:

 {'Fast Food' : [{'Name': 'McFood', 'Address': 'Street 1'}, {'Name': 'BurgerEmperor', 'Address': 'Way 1'}], ...], 'French' : [{'Name': 'BlueFrenchHorn', 'Address': 'Street12'}], ...} 

(sangría aquí para una mejor legibilidad).

Lo probé como el siguiente fragmento de código, pero no llego a ninguna parte de allí:

 import csv mydict={} with open ('food.csv', 'r') as csvfile: #sniff to find the format fileDialect = csv.Sniffer().sniff(csvfile.read(1024)) csvfile.seek(0) #read the CSV file into a dictionary dictReader = csv.DictReader(csvfile, dialect=fileDialect) for row in dictReader: mycategory= row["Category"] del row("Category") mydict[mycategory]=row 

Usando collections.defaultdict :

 import csv from collections import defaultdict mydict = defaultdict(list) # <--- with open ('food.csv', 'r') as csvfile: fileDialect = csv.Sniffer().sniff(csvfile.read(1024)) csvfile.seek(0) dictReader = csv.DictReader(csvfile, dialect=fileDialect) for row in dictReader: mycategory= row.pop("Category") mydict[mycategory].append(row) # Will put a list for not-existing key mydict = dict(mydict) # Convert back to a normal dictionary (optional)