2015-07-11 153 views
1

我試過谷歌 - 但我一直沒能找到與字典值的詞典一起工作的解決方案。讓我稍微解釋一下。Python 3-將字典值與字典值寫入到CSV文件

我有一張機票代碼字典,每個機票代碼是另一個字典,其中包含'姓名'和'已兌換',名稱是機票所有人,並且兌換機票是否已兌換。數據從名爲TicketCodes的csv文件加載,該文件包含1000行此數據。我有一個系統會截斷準備寫入的文件,但是我找到的寫入CSV的解決方案不起作用。我很抱歉,如果這是重複的 - 我可能沒有足夠努力搜索。如果是,請您將我鏈接到解決方案?非常感謝你!

+1

請出示您已經嘗試的代碼,你得到了錯誤。 –

+1

首先關注我上面的評論。之後,查詢我的水晶球,我認爲數據結構的適當序列化格式可能是JSON(您的字典的值是字典)。 –

+0

門票詞典?所以它其實是一個集合?如果是這樣,關鍵是什麼,你需要存儲它?最好給一個樣本入口完成。 – tutuDajuju

回答

0

JSON將是寫出Python字典數據更好的格式。但是,如果您的所有字典都具有相同的密鑰,那麼您可以使用字典密鑰作爲列名格式化CSV文檔。

例如:

# Assuming the data is a list of dictionaries 
the_data = [{'col1': 'data1', 'col2': 'data2'}, 
      {'col1': 'data3', 'col2': 'data4'}, 
      {'col1': 'data5', 'col2': 'data6'}, 
      {'col1': 'data7', 'col2': 'data8'}] 

# Build a list of the column names. 
# This could be done with list(the_data[0].keys()) 
# But then you have no control over the column ordering 
column_names = ['col1', 'col2'] 

# Print out column names 
print(",".join(column_names)) 

# Print out data 
for row in the_data: 
    print(",".join([row[field] for field in column_names])) 

輸出:

col1,col2 
data1,data2 
data3,data4 
data5,data6 
data7,data8 

注:在我的例子我剛剛打印出來的CSV數據,但是這將是微不足道的這個數據寫入一份文件。

而且,寫the_data以JSON格式是因爲這樣做以下簡單:

>>> import json 
>>> json.dumps(the_data) 

'[{"col2": "data2", "col1": "data1"}, {"col2": "data4", "col1": "data3"}, {"col2": "data6", "col1": "data5"}, {"col2": "data8", "col1": "data7"}]' 
+0

''你無法控制列排序「'不正確,這可以通過從集合import OrderedDict'完成,併爲每個'{}'創建一個OrderedDict()。爲列表的每個元素創建一個OrderedDict(),然後添加幾行代碼來放置鍵和值 – ytpillai

+0

@ytpillai你是對的,但原來的問題確實說這個詞典是從其他地方傳給他們的,他們可能無法控制數據類型。還有一個列名稱列表可以讓你輕鬆寫出一個子集。 –

+0

他們如何控制字典? – ytpillai