python 文件操作 循环 判断 数据处理

问题遇到的现象和发生背景
#data.txt文件内容
"""
id  date        city     temp   wind
0   03/01/2016   BJ      8      5
1   17/01/2016   BJ      12     2
2   31/01/2016   BJ      19     2
3   14/02/2016   BJ      -3     3
4   28/02/2016   BJ      19     2
5   13/03/2016   BJ      5      3
6   27/03/2016   SH      -4     4
7   10/04/2016   SH      19     3

8   24/04/2016   SH      20     3
9   08/05/2016   SH      17     3
10  22/05/2016   SH      4      2
11  05/06/2016   SH      -10    4
12  19/06/2016   SH      0      5
13  03/07/2016   SH      -9     5

14  17/07/2016   GZ      10     2
15  31/07/2016   GZ      -1     5
16  14/08/2016   GZ      1      5
17  28/08/2016   GZ      25     4
18  11/09/2016   SZ      20     1
19  25/09/2016   SZ      -10    4
"""
#下面是求某个城市的平均值
import re
f = open("data.txt","r")
a = []
b = []
for line in f.readlines()[1:]:
    # 去除空行,当不给split函数传递任何参数时,分隔符sep会采用任意形式的空白字符:空格、tab、换行、回车
    if len(line.split()) == 0:
        continue
    j = re.split(r"\s+", line.rstrip())
    if(j[2] == 'SH'):
        a.append(int(j[3]))
        b.append(int(j[4]))
print("\nHS temp平均值为{} wind平均值为{}".format(sum(a)/len(a),sum(b)/len(b)))
f.close()

#问题 怎么把上面的代码改成求所有城市的平均值?

img


这个是求单个城市的平均值的结果

#问题 怎么把上面的代码改成求所有城市的平均值?

我想要达到的结果

img


import re

f = open("data.txt", "r")
d = {}
for line in f.readlines()[1:]:
    # 去除空行,当不给split函数传递任何参数时,分隔符sep会采用任意形式的空白字符:空格、tab、换行、回车
    if len(line.split()) == 0:
        continue
    j = re.split(r"\s+", line.rstrip())
    if j[2] not in d.keys():
        d[j[2]]=[[],[]]
    d[j[2]][0].append(int(j[3]))
    d[j[2]][1].append(int(j[4]))
for idx,val in d.items():

    print("\n{} temp平均值为{} wind平均值为{}".format(idx,sum(val[0]) / len(val[0]), sum(val[1]) / len(val[1])))
f.close()

img


如有帮助,希望点一下下采纳