标签:python
刚才某个运维交流群中有个同学提出了以下需求:
abc 124
cba 234
abc 356
cba 244
ddd 234
我想计算这样一个文件里面第一列相同名称的 第二列和,有什么简单方法?结果要类似下面的
abc 480
cba 378
之后有位shell的大牛很快提出了解决方案:
awk ‘{a[$1]+=$2}END {for (i in a)print i,a[i]}‘ test.txt
sysadmin@sysadmin-VirtualBox:~$ cat test.txt abc 124 cba 234 abc 356 cba 244 cba 23232 abc 2323 ddd 234 sysadmin@sysadmin-VirtualBox:~$ awk ‘{a[$1]+=$2}END {for (i in a)print i,a[i]}‘ test.txt abc 2803 cba 23710 ddd 234
后来仔细想了想,这个需求可以用python的字典来实现,花了小二十分钟才写出来哈哈。。。
#!/usr/bin/python dict = {} spath1 = ‘/home/sysadmin/test.txt‘ f1 = open(spath1,‘r‘) for line in f1.readlines(): a = line.split()[0] b = line.split()[1] if dict.has_key(a): c = int(dict[a]) + int(b) dict[a] = c else: dict[a] = b for key in dict: print key,dict[key]
本文出自 “葡萄呀 Enjoy your life” 博客,请务必保留此出处http://bxuan.blog.51cto.com/376592/1584052
标签:python
原文地址:http://bxuan.blog.51cto.com/376592/1584052