Ce que vous faites est itérer à travers l'ensemble dict pour chaque cellule, ce qui est un peu bizarre et probablement pas ce que vous voulez faire. Ce que vous voulez vraiment faire, c'est regarder dans la dict et incrémenter la clé en question. Alors:
# first part stays mostly the same
rows = csv.reader(open("...csv"))
allCounts = {}
for row in rows:
for field in row:
allCounts[field] = allCounts.get(field, 0) + 1
Cette dernière ligne utilise un peu de fonctionnalité intéressante dict
, qui retourne une valeur par défaut si la clé est introuvable.
Dans votre propre code, il y a quelques défauts notables. La plus importante est la quatrième et cinquième lignes. vous extrayez le premier champ de la ligne sélectionnée et l'affectez à intVal
mais vous masquez complètement intVal
en l'utilisant comme clé lors de l'itération sur votre dict. ce que cela signifie, c'est que cette mission n'a pas fonctionné du tout.
La clause if
est vouée à l'échec. Vous vérifiez pour voir si une clé est dans une dict, mais vous êtes venu avec cette clé en itérant sur les touches de la même dict. Bien sûr, cette clé est dans le dict.
Le problème suivant est que votre clause else
modifie une collection sur laquelle vous itérez. Python ne fait aucune garantie sur la façon dont cela fonctionnera pour les dicts, alors ne le faites pas
D'ailleurs, il n'y a aucune raison d'itéter sur le dict. Vous pouvez simplement saisir n'importe quelle paire clé-valeur qui vous intéresse directement. Ce que vous devriez répéter est la liste des entiers du fichier. Un fichier CSV est toujours structuré comme une liste de valeurs (normalement séparées par des virgules) formant des lignes, et les lignes sont séparées par des retours à la ligne. le module CSV préserve cette vue en renvoyant une liste de listes. Pour explorer les valeurs réelles, vous devez parcourir chaque ligne, puis chaque champ de cette ligne. Votre code itère sur chaque ligne, puis chaque touche de la dict pour chaque ligne, en ignorant les champs.
Est-ce que ce travail est fait? En outre, quelle est exactement votre valeur de sortie prévue. Vous voulez votre dictionnaire pour chaque ligne du fichier CSV, puis ...? – chryss
non, ce n'est pas des devoirs. Je fais un projet de recherche et en train d'apprendre le python – student