2016-12-01 175 views
2

我有一個有序的字典,正如人們所期望的那樣,它包含許多鍵值對。我需要將有序字典的內容解析爲CSV格式,其中第一行的鍵和第二行的鍵分別對應。我已經取得了第一排,但是我不知道如何寫第二排。 OrderedDict中的值是您所期望的(它看起來像在終端中打印的內容):([(a, 1), (b, 2), (c, 3)])。下面是我有:將Python OrderedDict寫入CSV

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

我試圖遍歷值,並將其附加到一個名單,但名單沒有保持有序字典,原來爲了這,據我所知,會已經很難將列表中的值打印到CSV,以便它們與正確的鍵匹配。

在此先感謝您的幫助!

+0

如何嘗試熊貓,非常有用的庫來處理字典,CSV,列表。 – staticor

+1

你試過'csv.DictWriter'嗎? – Marat

回答

4

好吧,我要在這裏回答我自己的問題。一些人善意地在評論中提供建議。正如所建議的那樣,我正在與Pandas一起完成這項工作。然而,當我這樣做時,我想到我可以做到這一點,而無需學習Pandas模塊的細節。以下是我想出了:

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) 

所以這裏是什麼是怎麼回事:

  1. 在我的有序字典在創建對應的鍵和值的兩個空列表

  2. 迭代鍵/值對,在我的有序字典中,將每一對添加到其各自的列表中。因爲在Python列表保留它們的順序,這樣可以保證在任一列表中相應指標項屬於一起

  3. 寫的鑰匙,我的CSV的第一行,值到第二

我確定有更好的方法來做到這一點,但這對我的目的來說已經足夠了。