Python 用于计算多个运行总计的函数
我有一个元组列表Python 用于计算多个运行总计的函数,python,function,variables,Python,Function,Variables,我有一个元组列表 (something1, 500) (something1, 200) (something1, 300) (something2, 200) (something2, 600) (something2, 400) 我在pySpark中编写了一个函数来进行计算,以得到类似这样的结果。该函数基本上需要汇总发生的计数总数 (something1, 1000), (something2, 1200) 我目前的职能 def add_func
(something1, 500)
(something1, 200)
(something1, 300)
(something2, 200)
(something2, 600)
(something2, 400)
我在pySpark中编写了一个函数来进行计算,以得到类似这样的结果。该函数基本上需要汇总发生的计数总数
(something1, 1000),
(something2, 1200)
我目前的职能
def add_function(key, value):
last_key = None
recur_total = 0
key, value = join_data[0][0], join_data[0][1]
if last_key == key:
recur_total+ = value
else:
if last_key:
recur_total = value
if last_key == key:
recur_total = value
last_key = key
if last_key == key:
return(last_key, value)
我面临的问题
我不明白你这是什么意思。只要缩进正确,“多个提示”就可以正确创建单个函数
此错误意味着您似乎正在正确粘贴代码。要纠正错误,请仔细检查给出语法错误的行上的间距。其他人已经指出了关于正确缩进的问题的答案,但我的2美分是关于整个函数本身的 您想要完成的任务只需使用
itertools的groupby
即可完成
from itertools import groupby
data = [ ('something1', 500),
('something1', 200),
('something1', 300),
('something2', 200),
('something2', 600),
('something2', 400)]
for key, group in groupby(data, lambda x: x[0]):
result = 0
for things in group:
result = result + things[1]
print(key,result)
只要缩进正确,“多个提示”确实正确地创建了一个函数。请仔细检查给出语法错误的行上的间距。最后一个if语句的内部间距似乎过大。我在记事本中创建了此函数,并且每行都从行的开头开始。所以应该没有压痕的问题。粘贴在这里的代码已经格式化为可读性。如果你是指Windows记事本,那么我会小心的。我的理解是,它不是一个很好的文本编辑器。我在记事本中创建了这个函数,并且每行都从行首开始。所以应该没有压痕的问题。粘贴在此处的代码已格式化为readability@Raghu在python中,缩进很重要。要使代码正常工作,必须在记事本中正确缩进。我建议下载一个专为Notepad++、Sublime text 3或Atom等编程而设计的文本编辑器。为什么不在每组上运行sum而不是重新设计轮子呢+1介绍groupby两种方法。@Mad physical like how?用result=sum(x[1]表示组中的x)替换整个内部循环。
我正在pySpark控制台上运行此函数。所以可能无法导入。@Raghuitertools
是python中内置的模块。无论您是运行独立应用程序还是在pyspark CLI中运行代码,都应该能够使用它。还有@Mad Physicator,我以为你在引用reduce