Convertir archivo csv al diccionario

Hice esta pregunta ayer, pero todavía estoy atascado en ella. He escrito una función que actualmente lee un archivo correctamente, pero hay un par de problemas.

El principal problema que tengo es que de alguna manera debo omitir la primera línea del archivo y no estoy seguro si lo estoy devolviendo como un diccionario. Aquí hay un ejemplo de uno de los archivos:

"Artist","Title","Year","Total Height","Total Width","Media","Country" "Pablo Picasso","Guernica","1937","349.0","776.0","oil paint","Spain" "Vincent van Gogh","Cafe Terrace at Night","1888","81.0","65.5","oil paint","Netherlands" "Leonardo da Vinci","Mona Lisa","1503","76.8","53.0","oil paint","France" "Vincent van Gogh","Self-Portrait with Bandaged Ear","1889","51.0","45.0","oil paint","USA" "Leonardo da Vinci","Portrait of Isabella d'Este","1499","63.0","46.0","chalk","France" "Leonardo da Vinci","The Last Supper","1495","460.0","880.0","tempera","Italy" 

Necesito leer un archivo como el de arriba y convertirlo en un diccionario que tenga este aspecto:

 sample_dict = { "Pablo Picasso": [("Guernica", 1937, 349.0, 776.0, "oil paint", "Spain")], "Leonardo da Vinci": [("Mona Lisa", 1503, 76.8, 53.0, "oil paint", "France"), ("Portrait of Isabella d'Este", 1499, 63.0, 46.0, "chalk", "France"), ("The Last Supper", 1495, 460.0, 880.0, "tempera", "Italy")], "Vincent van Gogh": [("Cafe Terrace at Night", 1888, 81.0, 65.5, "oil paint", "Netherlands"), ("Self-Portrait with Bandaged Ear",1889, 51.0, 45.0, "oil paint", "USA")] } 

Esto es lo que tengo hasta ahora. Mi código actual funciona pero no convierte el archivo en un diccionario como el ejemplo anterior. Gracias por cualquier ayuda

 def convertLines(lines): head = lines[0] del lines[0] infoDict = {} for line in lines: infoDict[line.split(",")[0]] = [tuple(line.split(",")[1:])] return infoDict def read_file(filename): thefile = open(filename, "r") lines = [] for i in thefile: lines.append(i) thefile.close() mydict = convertLines(read_file(filename)) return lines 

¿Solo un par de pequeños cambios en mi código devolverían el resultado correcto o necesitaría abordar esto de manera diferente? Parece que mi código actual lee el archivo completo. Gracias por cualquier ayuda

Edit: @Julien Estaba funcionando (pero no correctamente) hasta que hice algunas revisiones esta mañana y ahora está dando un error de recursión.

Solo quieres esto:

 def read_file(filename): with open(filename, "r") as thefile: mydict = convertLines(thefile.readlines())) return mydict 

su función actual se está llamando infinitamente a sí misma … Luego, corrija su función convertLines si es necesario.

Esto debería simplificar un poco su código, sin embargo, me queda tratar con la fila del encabezado.

 from collections import defaultdict import csv artists = defaultdict(list) with open('artists.csv', 'r') as csvfile: reader = csv.reader(csvfile,delimiter=',') for row in reader: artists[row[0]].append(row[1:-1])