2015-12-03 24 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