我在awk中使用关联数组,以便根据数据集中的值执行计算。我想知道如何在Python中执行完全相同的操作。
输入
KEY1; CR 10个
KEY1;分贝; 5
KEY2; CR 5
KEY2;分贝; 7
KEY2; CR 9
KEY2; CR 12个
Key3; 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
Key3; 9
答案 0 :(得分:1)
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 )