提问人:Sparsh Garg 提问时间:11/17/2023 最后编辑:Sparsh Garg 更新时间:11/17/2023 访问量:30
如何使下面提到的代码更加优化和高效
How to make the below mentioned code more optimized and efficient
问:
我目前正在处理以下链接中所示的 json 文件
json 包含从 1890 年到 2023 年某省几年的降水量数据,json 包含两个键类型和特征。 功能是一个字典列表,其中我们有以下键 1.几何描述位置的经度和纬度 2.物业保持降水记录。这些包括 a) 降水发生的地方。 b)该地点记录的第一高降雨量、第二高降雨量、第三高降雨量、第四高降雨量和第五高降雨量是多少 c)这些降雨量值是哪一年记录的 3属性还包括有关记录数据地点的详细信息,例如省份名称、标识符和城市代码。
总共有 123 年,我试图做的是维护单独的词典,告诉我们该特定年份记录的最高降雨量值是多少。
例如
for 2016 the following are the highest rainfall values recorded
12.7, 17.5, 23.2, 70.8, 14. , 12.2, 22.6, 55.4, 34.6,
30.2, 25.2, 37.6, 14. , 5. , 12. , 46. , 72.4, 32. ,
40. , 7.4, 9.6, 23.4, 27.2, 32. , 4.2, 13.4, 24.2,
48.4, 17.9, 31.3, 15.8, 22.8, 24.3, 4.4, 21.7, 32.6,
32. , 32.6, 16.1, 16. , 3. , 24.4, 87. , 32.6, 46. ,
25.7, 67.8, 11.9, 9.8, 9.8, 49.6, 29.8, 4.8, 303. ,
11.8, 10. , 19. , 4. , 7.4, 71.6, 245. , 42. , 59.2,
25. , 6. , 22.9, 35.8, 28.9, 12.6]
因为我需要创建一个字典,其中键是年份,值是记录的所有降水的列表。以下是我想出的代码。
"""
Open json file and read
"""
with open('items.json') as f:
data=json.load(f)
"""
Extract properties from json
"""
X=[]
for feat in data['features']:
climate_properties=feat['properties']
X.append(climate_properties)
"""
record_precp is final output dictionary
record precp_year is list of all years
"""
record_precp={}
record_precp_year=[]
for x in X:
record_precpyear=x['RECORD_PRECIPITATION_YR']
record_precp_year.append(record_precpyear)
record_precp_year=list(set(record_precp_year))
"""
1. iterate through all properties and for every year in record_precp_year list if it's mentioned in the properties extract the preciptitation levels and create a new dictionary entry
this part of the code can be optimized.Can it be done in just two for loops?
"""
for x in X:
for year in record_precp_year:
record_level=[x['RECORD_PRECIPITATION'] for x in X if x['RECORD_PRECIPITATION_YR']==year]
record_precp.update({year:record_level})
我觉得在最后一节中可以优化,因为如果 json 有超过 10,000 条记录,那么这段代码会变得很慢。目前,条目总数限制为 5124 条记录。
因此,如果有任何方法可以优化此代码,请告诉我。如果您对数据有任何进一步的澄清,请告诉我。
另外,是否可以根据值列表绘制字典键。我知道以前有过关于这个特定主题的问题,但它们都涉及大小固定或较小的值。
对于绘图,这是我当前的代码 获取 2016 年创纪录的降水量的箱形图
precip_level=record_precp[2016]
precip_level=np.array(precip_level)
fig=plt.figure(figsize=(10,7))
ax=fig.add_axes([0,0,1,1])
bp=ax.boxplot(precip_level)
plt.show()
答: 暂无答案
评论
dictionary[key] = value
dictionary.update({key: value})