python - What is the error in this sentence?
天蓬老师
天蓬老师 2017-05-18 11:02:03
0
3
591
  File "log1.py", line 140
    for ref, occurnum in nsmallest(10, d.iteritems(), key=lambda (k,v): (-v,k)):
                                                                 ^
SyntaxError: invalid syntax

code show as below


def TopOccurr(num, request, total):
        args = parse_args()
        d = {}
        for i in get_obj[num]:
                if i in d:
                        d[i] = d[i]+1
                else:
                        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)

py3.5.2

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

reply all(3)
小葫芦

When defining lambda, if there are multiple parameters, these parameters do not need to be bracketed
e.g.

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

lambda in official documentation:

Post the modified complete code:

def TopOccurr(num, request, total):
    args = parse_args()
    d = {}
    for i in get_obj[num]:
        if i in d:
            d[i] = d[i]+1
        else:
            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)

No errors reported in actual testing (Python 3.6.0, IPython 5.3.0)

漂亮男人

Lambda in python3 does not support decompressing data using parentheses

Ty80

Just remove the parentheses of the parameters.

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template