Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关联数组awk与python_Python_Awk_Associative Array - Fatal编程技术网

关联数组awk与python

关联数组awk与python,python,awk,associative-array,Python,Awk,Associative Array,我在awk中使用关联数组,以便根据数据集中的值执行计算。我想知道如何在Python中执行完全相同的操作 输入 键1;铬;10 键1;分贝;5 键2;铬;5 键2;分贝;7 键2;铬;9 键2;铬;12 键3;分贝;三, 输出 键1;5 键2;19 键3;九, 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

我在awk中使用关联数组,以便根据数据集中的值执行计算。我想知道如何在Python中执行完全相同的操作

输入
键1;铬;10
键1;分贝;5
键2;铬;5
键2;分贝;7
键2;铬;9
键2;铬;12
键3;分贝;三,

输出
键1;5
键2;19
键3;九,

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中完成(伪代码)


你能给出一个实际的算法而不是一个不起作用的awk命令吗?python专家可能不知道awk,任何人都会被这个神秘的语句
a[$1]+=$2==“cr”?$3:$3*-1
弄糊涂。您不能添加一些括号来澄清(并使其可移植——正如所写的那样,代码会从某些awk中产生语法错误)和解释awk代码正在做什么吗?如果你这么做的话,你将有机会得到一个Python专家来帮助你。 AWK只是缺少了一个近义词(仍然是不可理解的)。不过,基本上,它会将
cr
(贷方)值相加,然后减去
db
(借方)每个不同键的运行总数的值。如何将键3求和为9?我的主要观点是,在没有解释的情况下发布一个语言X的程序,并询问如何用语言Y编写它是一个坏主意,因为它需要精通这两种语言的人来回答,而您真正需要的是一个语言Y中的脚本是了解语言Y的人。但复杂的三元表达式没有帮助!
a[$1]+=$2=="cr"?$3:$3*-1
a[$1] += ( $3 if $2=="cr" else $3*-1 )