解答例:練習問題_5_4 東京都の天気②
こちらは結果が合っているだけではなく、観測項目に増減があっても正しく計算できる汎用性を備えている必要があります。
wt2_2204 = {'小河内':{'降水量':157.0, '気温':11.9, '風速':1.1, '日照時間':164.6},
'青梅':{'降水量':177.5, '気温':14.3, '風速':1.3, '日照時間':172.4},
'練馬':{'降水量':195.0, '気温':15.0, '風速':1.6, '日照時間':168.9},
'八王子':{'降水量':198.0, '気温':14.6, '風速':2.9, '日照時間':172.4},
'府中':{'降水量':217.5, '気温':14.8, '風速':1.8, '日照時間':166.2},
'東京':{'降水量':224.5, '気温':15.3, '風速':2.8, '日照時間':169.5},
'羽田':{'降水量':187.5, '気温':15.4, '風速':5.6},
'世田谷':{'降水量':218.0}}
sites = wt2_2204.keys()
d = {}
for site in sites:
d.update(wt2_2204[site])
obs_items = d.keys()
average = {}
for item in obs_items:
values = []
for site in sites:
try:
values.append(wt2_2204[site][item])
except KeyError:
pass
average[item] = round(sum(values)/len(values),2)
wt2_2204.update({'平均':average, '観測地点':tuple(sites), '観測項目':tuple(obs_items)})
wt2_2204
{‘小河内’: {‘降水量’: 157.0, ‘気温’: 11.9, ‘風速’: 1.1, ‘日照時間’: 164.6},
‘青梅’: {‘降水量’: 177.5, ‘気温’: 14.3, ‘風速’: 1.3, ‘日照時間’: 172.4},
‘練馬’: {‘降水量’: 195.0, ‘気温’: 15.0, ‘風速’: 1.6, ‘日照時間’: 168.9},
‘八王子’: {‘降水量’: 198.0, ‘気温’: 14.6, ‘風速’: 2.9, ‘日照時間’: 172.4},
‘府中’: {‘降水量’: 217.5, ‘気温’: 14.8, ‘風速’: 1.8, ‘日照時間’: 166.2},
‘東京’: {‘降水量’: 224.5, ‘気温’: 15.3, ‘風速’: 2.8, ‘日照時間’: 169.5},
‘羽田’: {‘降水量’: 187.5, ‘気温’: 15.4, ‘風速’: 5.6},
‘世田谷’: {‘降水量’: 218.0},
‘平均’: {‘降水量’: 196.88, ‘気温’: 14.47, ‘風速’: 2.44, ‘日照時間’: 169.0},
‘観測地点’: (‘小河内’, ‘青梅’, ‘練馬’, ‘八王子’, ‘府中’, ‘東京’, ‘羽田’, ‘世田谷’),
‘観測項目’: (‘降水量’, ‘気温’, ‘風速’, ‘日照時間’)}