python返回字典value中最大值的键

引言

近期主要在学习python与IDL,因此后面也主要是分享这方面的编程技巧

案例实战

以下是某地区一周气象数据文件temp.txt中的内容:

2018-11-04  24  15
2018-11-05  18  11
2018-11-06  11  7
2018-11-07  9  5
2018-11-08  16  3
2018-11-09  19  7
2018-11-10  18  10

其中,每行记录某一天的气温数据,包括日期、最高气温和最低气温。
(1) 编写程序,找出这一周中哪一天最热(按最高气温计算)?最高多少度?这一周中哪一天最冷(按最低气温计算)?最冷多少度?
(2) 假设在气象意义上,入冬标准是有连续5天日均气温低于10℃,根据这一周的气象数据判断该地区是否已经入冬。
输出形式

Highest Temperature:2018-11-04,24 Celsius
Lowest Temperature:2018-11-08,3 Celsius
Not in winter

此题我认为最方便是引用字典存储,因为这里日期是唯一的可以对应于字典的key,而其对应的温度数据可以认为是value,可以用max(dict,key=dict.get)方法获得字典dict中value的最大值所对应的键的方法,max(dict, key)方法首先遍历迭代器,并将返回值作为参数传递给key对应的函数,然后将函数的执行结果传给key,并以此时key值为标准进行大小判断,返回最大值。
这里为什么不能直接用max函数呢?
因为max函数是默认情况下比较的是key的大小并非是value

代码:

# -*- coding: utf-8 -*-
"""
Created on Tue Apr 21 17:34:10 2020

@author: asus
"""
f=open('temp.txt','r')
lst=f.readlines()
f.close()
mindict={}
maxdict={}
for ele in lst:
    lst1=ele.strip('\n').split()
    maxdict[lst1[0]]=int(lst1[1])
    mindict[lst1[0]]=int(lst1[2])
max_key = max(maxdict, key=maxdict.get)
min_key = min(mindict, key=mindict.get)
print('Highest Temperature:{0},{1} Celsius'.format(max_key,maxdict[max_key]))
print('Lowest Temperature:{0},{1} Celsius'.format(min_key,mindict[min_key]))
minvalue=list(mindict.values())
continuous_days=5
for i in range(0,len(minvalue)-continuous_days):
    if max(minvalue[i:i+continuous_days])<10:
        print('in winter')
        break
else:
    print('Not in winter')

猜你喜欢

转载自blog.csdn.net/qq_44589327/article/details/105669362
今日推荐