python - 這句是什么錯誤?
問題描述
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定義的時候,如果有多個參數(shù),那么這些參數(shù)是不需要加括號的e.g.
l=lambda x,y:(y,x) # 正確
l=lambda (x,y):(y,x) # 報錯
官方文檔中的lambda:
貼上修改后完整代碼:
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)
python3中l(wèi)ambda不支持用括號的方式解壓數(shù)據(jù)
回答3:把參數(shù)的括號去掉就行了。
相關(guān)文章:
1. mysql - 在不允許改動數(shù)據(jù)表的情況下,如何優(yōu)化以varchar格式存儲的時間的比較?2. java中返回一個對象,和輸出對像的值,意義在哪兒3. MySQL中無法修改字段名的疑問4. docker start -a dockername 老是卡住,什么情況?5. css3 - 純css實現(xiàn)點擊特效6. 安全性測試 - nodejs中如何防m(xù)ySQL注入7. javascript - 關(guān)于apply()與call()的問題8. docker網(wǎng)絡(luò)端口映射,沒有方便點的操作方法么?9. css - 網(wǎng)頁div區(qū)塊 像蘋果一樣可左右滑動 手機與電腦10. python - pandas dataframe如何對某列的空數(shù)據(jù)位置進行update?update的函數(shù)是自定義的,參數(shù)是同一行的另外兩列數(shù)據(jù)
