如果新值大于旧值,如何在for循环中更新字典值?

时间:2019-01-14 20:35:44

标签: python dictionary

我正在尝试从包含日期和温度(每天每一分钟的温度值)的CSV文件中获取每日最高温度。这段时间跨度为6个月,我需要6个月中每天的最高温度。

关于如何执行此操作,我有两种思路:

1:我认为我可以使用字典,其键为日期(例如'10 / 30/18'),值作为当天温度的列表。

我需要遍历每一行并将温度添加到相应的每一天。

这是我的开始,但不确定我是否正在以最佳方式进行处理

dates={}
for row in reader:
    if row[0] in dates:
        dates[row[0]].append([float(row[2])])
    else:
        tempvalues=[]
        tempvalues.append(float(row[2]))
        dates.update({row[0]:tempvalues})

print(dates)

2:我可以再次使用日期作为键,但是只有在温度值大于以前的值时才更新温度值。但是我不确定如何将这种if语句放入字典循环中。

2 个答案:

答案 0 :(得分:0)

我认为类似的方法应该起作用:

dates={}

for row in reader:
    if row[0] in dates:
        dates[row[0]].append(float(row[2]))
    else:
        dates[row[0]] = [(float(row[2]))]

for k, v in dates.items():
    print (k, max(v))

如果您只想存储最高温度,这应该起作用:

dates={}

for row in reader:
    if row[0] in dates:
        if dates[row[0]] < float(row[2]):
            dates[row[0]] = float(row[2])
    else:
        dates[row[0]] = float(row[2])

for k, v in dates.items():
    print (k, v)

答案 1 :(得分:0)

您可以使用list comprehension创建字典:

#for dicts with
# dates = { '10/30/18':[95.1,94.1,93.1],
#....   }       
min_dates = {date:min(temp)] for (date,temp) in dates}
max_dates = {date:man(temp)] for (date,temp) in dates}