2016-12-01 2 views
2

J'ai un dictionnaire ordonné qui, comme on pouvait s'y attendre, contient un certain nombre de paires clé-valeur. J'ai besoin d'analyser le contenu du dictionnaire ordonné au format CSV, avec les clés dans la rangée supérieure et leurs valeurs respectives dans la deuxième rangée. J'ai la première rangée, mais je ne sais pas comment écrire la deuxième rangée. Les valeurs dans OrderedDict sont ce que vous attendez (à quoi il ressemble imprimé dans le terminal): ([(a, 1), (b, 2), (c, 3)]). Voici ce que j'ai:Écrire Python OrderedDict to CSV

import csv 
with open("frequencies.csv", "w") as outfile: 
    csvwriter = csv.writer(outfile) 
    csvwriter.writerow(myDict) 

J'ai essayé itérer sur les valeurs et les annexant à une liste, mais la liste n'a pas maintenu l'ordre initial du dictionnaire ordonné, qui, pour autant que je pouvais dire, serait Il est très difficile d'imprimer les valeurs de la liste au format CSV afin qu'elles correspondent aux bonnes clés.

Merci d'avance pour votre aide!

+0

que diriez-vous d'essayer pandas, bibliothèque très utile pour gérer dict, csv, liste. – staticor

+1

avez-vous essayé 'csv.DictWriter'? – Marat

Répondre

4

Très bien, je vais répondre à ma propre question ici. Quelques personnes ont eu la gentillesse d'offrir des suggestions dans les commentaires. Comme suggéré, je travaillais à accomplir cela avec Pandas. Comme je le faisais, cependant, il m'est apparu que je pouvais le faire sans avoir à apprendre les tenants et les aboutissants du module Pandas. Voici ce que je suis venu avec:

import csv 

keys, values = [], [] 

for key, value in myOrderedDict.items(): 
    keys.append(key) 
    values.append(value)  

with open("frequencies.csv", "w") as outfile: 
    csvwriter = csv.writer(outfile) 
    csvwriter.writerow(keys) 
    csvwriter.writerow(values) 

Alors, voici ce qui se passe ici:

  1. Créer deux listes vides correspondant aux clés et valeurs dans mon dictionnaire ordonné

  2. itérer sur la paires clé/valeur dans mon dictionnaire ordonné, ajoutant chaque paire à sa liste respective. Parce que les listes en Python conservent leur ordre, ce qui garantit que les éléments des indices correspondants dans les deux listes appartiennent ensemble

  3. Écrivez les clés de la première ligne de mon CSV, et les valeurs au second

I Je suis sûr qu'il y a des façons plus élégantes de le faire, mais c'est suffisant pour mes objectifs.