python - 分配字典键和值时出现 KeyError

标签 python python-3.x csv dictionary keyerror

我最近开始学习 Python,我想编写一个脚本来从 CSV 列(格式为 YYYY/DD/MM)中提取月份中的日期,然后将网站用户与月份中的几天(最后是几周)进行比较本月)作为挑战/学习练习。要点是它提取 CSV 信息,将其格式化/转换为整数,然后将其作为字典重新组合在一起,比较 1-31 天与网站访问者的数量。

我的代码如下。我收到的错误是第 29 行 result[days] = users 上的“KeyError: 1”。我想我明白发生了什么(有点——我猜它对我尝试为空字典赋值的方式不满意?它似乎在寻找整数 1 作为键但没有找到它? ) 但我不知道下一步该做什么。我学习 Python 大约 2 周,所以我希望这不是一个太愚蠢的问题。我究竟做错了什么?如何使 users_by_day 的索引 [0] 和 [1] 处的列成为我字典中的键和值?

注意:我正在学习和使用 Python 3。

 import csv
 result = {}
 with open('analytics.csv') as csv_file:
     csv_reader = csv.reader(csv_file, delimiter=',')
     line_count = 0
     users_by_day = list(csv_reader)
     for row in users_by_day: #iterate through data

          day = row[0].split('/') #split date to extract day of month

         try: #skip unsplit cells

             day = day[1]
         except Exception as e:
             pass
         row[0] = day #set list column to extracted day value

 users_by_day = users_by_day[1:-1] #strip headers

 for row in users_by_day:
     days = None
     users = None

         days = int(row[0]) #set values to int for math
         users = int(row[1])

     if days is not None:
         if days in result: #trying to check for days in result
             result[days] = users #where key error occurs
         else:
             result[days] += users

 print(result)

最佳答案

setdefault()对字典的调用非常适合这类事情,并且优于 if {thing} in {dict} 结构。

所以下面的代码:

if days in result:  # trying to check for days in result
    result[days] = users  # where key error occurs
else:
    result[days] += users

可能变成:

result.setdefault(days, 0)
result[days] += users

关于python - 分配字典键和值时出现 KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53403949/

相关文章:

python - val损失没有减少

python-3.x - 以编程方式删除 Python 源代码中的类型提示

linux - 使用 shell 脚本进行 CSV 操作

python - 使用 Python 3 读取 CSV 文件

python - 到 Flask 的环回访问 token

python - pandas 的最大项目匹配

python - (Python) socket.gaierror : [Errno 11001] getaddrinfo failed

python - 禁止(状态代码 : 403) Can't send messages to this user

python - 在 Python 中共享数据

javascript - 如何在 JavaScript 中使用从 csv 文件加载的数据?