0
votes

Comment créer un dictionnaire imbriqué de la CSV à l'aide de Python

J'ai un fichier CSV indiqué ci-dessous xxx

Je dois convertir en dictionnaire indiqué ci-dessous xxx

j'ai lu fichier en utilisant csv xxx

comment convertir en dictionnaire xxx


1 commentaires

Regardez iTertools.groupby et collections.Conter.


3 Réponses :


1
votes

Étant donné que chaque ligne est renvoyée sous forme de liste de chaînes à partir de csv.reader code>, vous devez essayer comme ci-dessous:

result_dict = {}
for row in reader:
    if row[0] in result_dict:
        if row[1] in result_dict[row[0]]:
            result_dict[row[0]][row[1]] += 1
        else:
            result_dict[row[0]][row[1]] = 1
    else:
        result_dict[row[0]] = {row[1]:1}


0 commentaires

1
votes
from collections import defaultdict, Counter

parsed = defaultdict(Counter)
reader = csv.reader(file_obj)
code_index = 0
product_index = 1
for row in reader:
    if row and len(row) >= 2:
        code = row[code_index]
        product = row[product_index]
        parsed[code][product] += 1
I think this will do the job.

4 commentaires

a obtenu une erreur d'erreur = ligne [Product_Index IndexError: Index de la liste hors de portée


Probablement un problème avec la longueur de ligne .. J'ai ajouté un chèque pour le nombre d'éléments attendu, mais vous devez prendre en compte le meilleur moyen de valider vos données entrantes.


Peut-on itération de CSV avec le comptoir. Je reçois une sortie "analysée" comme defaultDict (collections.counter, {})


Oui, analysé est essentiellement un dictionnaire imbriqué. L'objet compteur fournit des méthodes d'assistance supplémentaires, mais fournit des fonctionnalités de dictionnaire standard.



0
votes

courtoisie: @Monkut xxx


0 commentaires