2016年2月22日 星期一

[Python] 讀取CSV並寫入字典

本篇是筆記使用dict去紀錄CSV中的內容
包含1 key 多 value 以及印出值


我們的資料包含列為標題欄為標題兩種

列為標題(範例檔案)
Class Name ID
2A Amy 135
1B Ban 145


建立字典時,我們希望能以標題為key,內容為值
import csv
global mydict
with open('D:/testfile.csv','rt') as fileX:
    filereader = csv.DictReader(fileX)
    mydict = {}
    for row in filereader:
        for column, value in row.items():
            mydict.setdefault(column, []).append(value)
    for key in mydict:
        print('Key in mydict='+str(key))
    for key in mydict.keys():
        print('Key in d.keys='+str(key))
    for value in mydict.values():
        print('Key in d.values='+str(value))
    for k,v in mydict.items():
        print(k,v)

欄為標題(範例檔案)
Class 2A 1B
Name Amy Ban
ID 135 145

import csv
global mydict
with open('D:/testfile.csv','rt') as fileX:
    filereader = csv.reader(fileX)
    mydict = {}
    for row in filereader:
        key = row[0]
        mydict[key] = row[1:]
    for key in mydict:
        print('Key in mydict='+str(key))
    for key in mydict.keys():
        print('Key in d.keys='+str(key))
    for value in mydict.values():
        print('Key in d.values='+str(value))
    for k,v in mydict.items():
        print(k,v)


以下印出的結果
(字典的key並沒有順序性,所以印出的順序有可能不一樣)
Key in mydict=ID
Key in mydict=Class
Key in mydict=Name
Key in d.keys=ID
Key in d.keys=Class
Key in d.keys=Name
Key in d.values=['135', '145']
Key in d.values=['2A', '1B']
Key in d.values=['Amy', 'Ban']
ID ['135', '145']
Class ['2A', '1B']
Name ['Amy', 'Ban']

需要特別注意的是
列為標題時,讀取檔案用的是
filereader = csv.DictReader(fileX)

欄為標題時,讀取檔案用的是
filereader = csv.reader(fileX)

Reference:
[1]: http://stackoverflow.com/questions/14091387/creating-a-dictionary-from-a-csv-file (Available:2016/02/23)

沒有留言:

張貼留言