2015-04-02 18 views
0

我有一個for循環,可以創建多個字典作爲輸出。我想將所有這些字典捕獲到一個列表中。這個怎麼做?在下面的例子中,當您打印出行時,循環會生成數百個字符。我想將整個字典輸出封裝爲單個列表。我的代碼在下面,但是正在傾倒出大量的列表和字典。類型將從循環生成的多個字典轉換爲單個列表

reader = csv.DictReader(f) 
for row in reader: 
    print row #for debug 
    for key, value in row.iteritems(): 
     temp=[key,value] 
     alist.extend(temp) 
     print alist 

ALIST應該是這樣的[{k,v},{k2,v2},{k3,v3}...]

+0

我看到兩個問題;一個是你的代碼不會創建任何字典,第二個是'{k,v}'不是有效的字典語法。 – 2015-04-02 05:05:07

+0

這是不正確的,代碼是由於csv.dictreader創建字典。親自嘗試一下。 f只是一個csv文件,裏面有一些列和數據。 – AP70 2015-04-02 05:07:17

+0

如果你想要列表而不是字典,爲什麼你'csv.DictReader'而不是'csv.reader'(它返回列表)?看起來你正在爲自己工作。 – Blckknght 2015-04-02 05:08:20

回答

1

你可以讓你的生活只是在做簡單以下:

import csv 

with open('somefile.csv') as f: 
    reader = csv.DictReader(f) 
    rows = list(reader) 

rows將從CSV文件中的所有行的列表,並每一行將被表示爲一個字典。

+0

謝謝,正是我所需要的..無法弄清楚如何將註釋類型轉換爲列表。 – AP70 2015-04-02 05:14:19

+0

好吧,要清楚 - 這不是這樣做的(即,類型轉換)。它只是將生成器'reader'傳遞給'list()'方法。它和'rows = [我爲我在讀者中]' – 2015-04-02 05:15:47

+0

一樣,謝謝,真的幫助我學習。 – AP70 2015-04-02 05:19:01