2

我是 Python 和编程的新手,目前正在编写一个脚本,该脚本最终将根据新教的比率在美国地图上为县着色。我遇到了一个让我目瞪口呆的问题,我似乎找不到任何答案。

此代码读取具有以下格式的 csv 文件:

2060;6,018888889
2068;169,77
etc...

其中第一项是fips代码,第二项是费率。我想将这些分配给一个字典,以后我可以用它在县地图上着色。以下代码旨在实现这一目标:

#populate dictionary with fips and rate from csv file
evanrate = {}

with open(r'C:\Users\Jeroen\documents\hacker1\evanrate.csv') as evanrate:
        parsereader = csv.reader(evanrate, delimiter = ';')
    for row in parsereader:
        fips = row[0]
        rate = float(row[1].replace(',', '.'))

        evanrate[fips] = rate

但是,当我尝试使用代码“evanrate[fips] = rate”填写字典时,出现错误:

Traceback (most recent call last):
   File "C:\Users\Jeroen\Documents\hacker1\evanrate.py", line 16, in <module>
    evanrate['fips'] = rate
   TypeError: '_io.TextIOWrapper' object does not support item assignment

我正在使用 Python 3.3 和 Windows 7。

4

1 回答 1

9
# this is a dict 
#   ↓
evanrate = {}                                                # this isn't  --.
                                                             #     ↓         |
with open(r'C:\Users\Jeroen\documents\hacker1\evanrate.csv') as evanrate:  # |
        parsereader = csv.reader(evanrate, delimiter = ';')                # |
    for row in parsereader:                                                # |
        fips = row[0]                                                      # |
        rate = float(row[1].replace(',', '.'))                             # /
        #   ↓---------------------------------------------------------------/
        evanrate[fips] = rate

重命名您的字典或文件。

于 2013-03-31T20:34:39.327 回答