我目前正在编写代码,该代码应该读取一个文件,该文件包含近年来大地震的日期和震级,并返回一个字典,其中键是地震发生的日期,然后是震级的值那天发生的地震。
我的代码目前看起来像这样:
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]
