您的位置:首页技术文章
文章详情页

python - 这句是什么错误?

浏览:62日期:2022-06-30 16:52:10

问题描述

File 'log1.py', line 140 for ref, occurnum in nsmallest(10, d.iteritems(), key=lambda (k,v): (-v,k)): ^SyntaxError: invalid syntax

代码如下

def TopOccurr(num, request, total):args = parse_args()d = {}for i in get_obj[num]:if i in d:d[i] = d[i]+1else:d[i] = 1x = PrettyTable([request, total])x.align['Requests'] = 'l'x.padding_width = 1for ref, occurnum in nsmallest(10, d.iteritems(), key=lambda (k,v): (-v,k)):x.add_row([ref[:120], occurnum])return x.get_string(start=0, end=10, sortby=total, reversesort=True)

py3.5.2

问题解答

回答1:

lambda定义的时候,如果有多个参数,那么这些参数是不需要加括号的e.g.

l=lambda x,y:(y,x) # 正确

l=lambda (x,y):(y,x) # 报错

官方文档中的lambda:python - 这句是什么错误?

贴上修改后完整代码:

def TopOccurr(num, request, total): args = parse_args() d = {} for i in get_obj[num]:if i in d: d[i] = d[i]+1else: d[i] = 1 x = PrettyTable([request, total]) x.align['Requests'] = 'l' x.padding_width = 1 for ref, occurnum in nsmallest(10, d.iteritems(), key=lambda k,v:(-v,k)):x.add_row([ref[:120], occurnum]) return x.get_string(start=0, end=10, sortby=total, reversesort=True)

实测没有报错(Python 3.6.0,IPython 5.3.0)python - 这句是什么错误?

回答2:

python3中lambda不支持用括号的方式解压数据

回答3:

把参数的括号去掉就行了。

标签: Python 编程
相关文章: