【发布时间】:2014-06-21 21:01:51
【问题描述】:
我在 awk 中使用关联数组来执行数据集中值的计算。我想知道如何在 Python 中执行完全相同的操作。
输入
键1;cr;10
Key1;db;5
Key2;cr;5
Key2;db;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
【问题讨论】:
-
你能给出你的实际算法而不是一个不工作的 awk 命令吗?
-
python 专家可能不知道 awk,任何人都会被神秘的声明
a[$1]+=$2=="cr"?$3:$3*-1弄糊涂。你不能添加一些括号来澄清(并使其可移植 - 正如所写的那样,代码会从某些 awk 产生语法错误)并解释 awk 代码在做什么?如果你这样做了,你将更有可能让 python 专家考虑帮助你。 -
awk只是缺少一个右括号(并且仍然难以理解)。不过,基本上,它会添加cr(贷方)值并从每个不同键的运行总计中减去db(借方)值。 -
如何让 Key3 和为 9?
-
我的主要观点实际上只是用 X 语言发布一个没有任何解释的程序并询问如何用 Y 语言编写它是一个坏主意,因为它需要熟悉两种语言的人来回答当你真正需要得到一个语言 Y 的脚本时,你只需要知道语言 Y 的人。虽然复杂的三元表达式没有帮助!
标签: python awk associative-array