首页 > 解决方案 > 有没有办法修复将浮点值附加到 Python 中的字典?

问题描述

我目前正在编写代码,该代码应该读取一个包含近年来大地震的日期和震级的文件,并返回一个字典,其中的键是地震发生的日期,然后是地震的震级那一天发生的事情。

我的代码目前如下所示:

def magnitudedictionary():

earth = open("earthquakes.txt", "r")

magdict = {}
for line in earth:
    alist = line.split()
    magnitude= float(alist[0])
    date = alist[1]
    if date in magdict:
        magdict[date].append(magnitude)
    else:
        magdict[date] = magnitude

earth.close()

return magdict

但是每当我尝试运行代码时,我总是会得到一个 Traceback,上面写着:

 Traceback (most recent call last):
     File "/Users/MargaretJagger/PycharmProjects/Homework 6/Q2.py", line 18, in <module> magnitudedictionary()
     File "/Users/MargaretJagger/PycharmProjects/Homework 6/Q2.py", line 10, in magnitudedictionary
magdict[date].append(magnitude)
AttributeError: 'float' object has no attribute 'append'

Process finished with exit code 1

我不太确定问题到底是什么,但我知道它与浮点数和字典值不匹配有关。

标签: pythonpython-3.x

解决方案


你可能需要一个defaultDict。然后,您可以避免测试并直接输入值。

这是一个简单的模型:

from collections import defaultdict

earth = '''7.6 20190801
8.2 20180201
7.1 20190801
6.5 20190801
4.2 20180201'''

magdict = defaultdict(list) # values will default to new lists

for line in earth.split('\n'):
    alist = line.split(' ')
    magnitude= float(alist[0])
    date = alist[1]
    magdict[date].append(magnitude)  #magdict[date] will default to a list if the key doesn't already exist

print(magdict['20190801'])
>>> [7.6, 7.1, 6.5]

推荐阅读