python - 這句是什么錯(cuò)誤?
問(wèn)題描述
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
問(wèn)題解答
回答1:lambda定義的時(shí)候,如果有多個(gè)參數(shù),那么這些參數(shù)是不需要加括號(hào)的e.g.
l=lambda x,y:(y,x) # 正確
l=lambda (x,y):(y,x) # 報(bào)錯(cuò)
官方文檔中的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)
實(shí)測(cè)沒(méi)有報(bào)錯(cuò)(Python 3.6.0,IPython 5.3.0)
python3中l(wèi)ambda不支持用括號(hào)的方式解壓數(shù)據(jù)
回答3:把參數(shù)的括號(hào)去掉就行了。
相關(guān)文章:
1. mysql 可以從 TCP 連接但是不能從 socket 鏈接2. sql語(yǔ)句 - 如何在mysql中批量添加用戶?3. mysql 非主鍵做范圍查找實(shí)現(xiàn)原理的一點(diǎn)困惑4. java - jdbc如何返回自動(dòng)定義的bean5. 怎么php怎么通過(guò)數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。6. mysql - 數(shù)據(jù)庫(kù)建字段,默認(rèn)值空和empty string有什么區(qū)別 1107. mysql - JAVA怎么實(shí)現(xiàn)一個(gè)DAO同時(shí)實(shí)現(xiàn)查詢兩個(gè)實(shí)體類(lèi)的結(jié)果集8. mysql建表索引問(wèn)題求助9. mysql - PHP定時(shí)通知、按時(shí)發(fā)布怎么做?10. 事務(wù) - mysql共享鎖lock in share mode的實(shí)際使用場(chǎng)景
