python - 有没有办法修复将浮点值附加到 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
我不太确定问题到底是什么,但我知道它与浮点数和字典值不匹配有关。
解决方案
你可能需要一个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]