2015-12-03 58 views
1

我有一個帶有郵政編碼及其時區的CSV文件。如何將CSV文件轉換爲字典?這將是一個更大的任務模塊。我的代碼看起來像這樣和我卡在下一步做什麼:使用python創建CSV文件的字典

import csv 

with open('zipcode.csv', 'rb') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     print row 

input_file = csv.DictReader(open("zipcode.csv")) 
+1

DictReader設計打開CSV文件的每一行到一個單獨的字典。那是你要的嗎?如果不是,另一種選擇是將數據中的特定字段用作字典密鑰。如果你想這樣做,你應該在打開文件之前用'my_dict = {}'創建一個字典,然後用'my_dict [row [0]] = row [1]'替換'print row'或類似的東西。 –

+0

我希望每個郵政編碼都是一個關鍵字,而時區是一個值。郵政編碼是唯一的,而時區可以重複。整個任務是將客戶的郵政編碼與他們的時區相匹配,這樣他們就可以按照電話號碼先聯繫誰。 – JPunelli

+0

在這種情況下,我列出的第二種方法是正確的。從csv中取出每一行並將其添加到字典中。 –

回答

1

你的文件結構製作猜測,試試這個:

import csv 

my_dict = {} 

with open('zipcode.csv', 'rb') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     my_dict[row[0]] = row[1] 
1

我不知道你的數據文件看起來像,但這裏是一個辦法做到這一點使用熊貓據幀,假設您的CSV文件有兩列:ZIP_CODE和TIME_ZONE,以逗號分隔,沒有任何標題:

import pandas as pd 
df = pd.read_csv('zipdata.csv', header=None) 
my_dict = dict(zip(df[0], df[1])) 
1

這個簡單的腳本應該可以幫助你看着辦吧出。您將不需要使用DictReader

test.py

import csv 

# Open the file 
with open('zipdata.csv') as f: 
    # Populate a dictionary with the reader 
    my_dict = dict(csv.reader(f)) 

# Print the key-value pairs 
for k, v in my_dict.iteritems(): 
    print("{}: {}".format(k, v)) 

我用我自己的測試csv文件,test.csv和這裏的輸出:

23:59 $ cat test.csv 
hello, world 
test, testing 
✔ ~ 
23:59 $ python test.py 
test: testing 
hello: world