我在awk中使用关联数组来执行数据集中值的计算。我想知道如何在Python中执行完全相同的操作。
输入 密钥1;cr;10 键1;db;5 密钥2;cr;5 密钥2;db;7 密钥2;cr;9 密钥2;cr;12 密钥3;db;3
awk -F";" '{a[$1]+=$2=="cr"?$3:$3*-1}END{for(i in a){print i FS a[i]}}' input输出 密钥1;5 密钥2;19 关键3;9
发布于 2014-05-05 14:20:36
Python 2:
data = '''Key1;cr;10
Key1;db;5
Key2;cr;5
Key2;db;7
Key2;cr;9
Key2;cr;12
Key3;db;3
'''
results = {}
for line in data.splitlines():
fields = line.split(';')
if fields[0] not in results:
results[fields[0]] = 0
if fields[1] == 'cr':
results[fields[0]] += int(fields[2])
else:
results[fields[0]] -= int(fields[2])
#--- END ---
for key in sorted(results.keys()):
print '%s;%s' % (key, results[key])编辑:
顺便问一下:
a[$1]+=$2=="cr"?$3:$3*-1可以用Python完成(伪代码)
a[$1] += ( $3 if $2=="cr" else $3*-1 )https://stackoverflow.com/questions/23474530
复制相似问题