Skip to main content
 首页 » 编程设计

python之有没有办法修复将浮点值附加到 Python 中的字典

2025年05月04日15sxdcgaq8080

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

我的代码目前看起来像这样:

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 

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

请您参考如下方法:

你可能想要一个 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]