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定義的時候,如果有多個參數,那么這些參數是不需要加括號的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中lambda不支持用括號的方式解壓數據
回答3:把參數的括號去掉就行了。
相關文章:
1. python bottle跑起來以后,定時執行的任務為什么每次都重復(多)執行一次?2. python - 爬蟲模擬登錄后,爬取csdn后臺文章列表遇到的問題3. html5 - HTML代碼中的文字亂碼是怎么回事?4. 視頻文件不能播放,怎么辦?5. javascript - vue2如何獲取v-model變量名6. javascript - 求幫助 , ATOM不顯示界面!!!!7. mysql - 分庫分表、分區、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處8. javascript - 為什么在谷歌控制臺 輸出1的時候,輸出的1立馬就不見了9. javascript - angular使從elastichearch中取出的文本高亮顯示,如圖所示10. javascript - ios返回不執行js怎么解決?
