如何聚合每日温度数据以将月份用作python字典中的键?

问题描述 投票:2回答:2

我是python的新手,请原谅我,如果这看起来很简单,我无法弄清楚...

对于家庭作业,我们被要求“编写python代码来读取一年中每个月的每日温度数据。制作三个词典,MinTAvgTMaxT,每个月份号码(1..12)作为关键和相应月份每天的最低,最高和平均每日温度值列表。“我需要在不使用pandas和numpy的情况下执行此操作,因为这些是分配的下一个问题。

我正在努力开始。我试图从MinT开始,看看我是否可以让代码工作,但多次失败。到目前为止我有......

import csv

weather = csv.DictReader(open(...))
MinT = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
min_t = []
for r in weather:
    min_t.append(float(r['LowT']))

输出是该年度的所有最小值,但我不确定如何将每日数据汇总到我可以使用月份作为关键字的位置。

任何帮助,将不胜感激。

python python-3.x
2个回答
1
投票

要创建一个字典,其中键是数字月份,值将是列表,您需要:

MinT = {1:[], 2:[], 3:[], 4:[], 5:[], 6:[], 7:[], 8:[], 9:[], 10:[], 11:[], 12:[]}

但是,使用循环初始化更容易:

MinT = {}
for x in range(12):
 MinT[x+1] = []

或字典理解:

MinT = {month_num + 1: [] for month_num in range(12)}

0
投票

这是使用comprehensions的自包含示例:

from random import randint

def generate_temperatures():
    return [randint(60, 92) for day in range(randint(28, 31))]

# This simulates loading your data
annual_temperatures = {month_num + 1: generate_temperatures() for month_num in range(12)}

# This calculates the goods :)
avg_monthly_temperature = {month: sum(temp)/len(temp) for (month, temp) in annual_temperatures.items()}
min_monthly_temperature = {month: min(temp) for (month, temp) in annual_temperatures.items()}
max_monthly_temperature = {month: max(temp) for (month, temp) in annual_temperatures.items()}
© www.soinside.com 2019 - 2024. All rights reserved.